스크립트를 수정해야 하는데 횡설수설이 가득하네요

스크립트를 수정해야 하는데 횡설수설이 가득하네요

다운로드한 프로그램의 일부인 스크립트를 수정해야 합니다. 하지만 vim으로 스크립트를 보려고 하면 무작위로 배치된 기호, 숫자, 문자로 가득 차 있습니다. 이 스크립트를 읽기 위해 제가 할 수 있는 일이 있나요? 이것은 스크립트의 일부입니다.

ELF          >    @     @        J         @ 8  @         @       @ @     @ @     À      À                           @      @                                          @       @     TB     TB                   XB     XBa     XBa     \      ˜†                   €B     €Ba     €Ba     à      à                         @     @                            Påtd   „(     „(A     „(A     ´      ´             Qåtd                                                  /lib64/ld-linux-x86-64.so.2          GNU                   %   8   )   #   7              $          .   '      "          ,                            1          *   6      5   3      /   2   %   -   0                                                        

   !             (   +                     4      &                               ±                                       A             !                    ®       *                       9                       ×             ñ       «             P       z              â      ó             ³       í             
       a             ¥      
             3       ¢                     Æ                                    ?       s             Š      X             ð                    é       ö                       #             N       t             9                           Ü                    M              )       Š             £       z             [       -             :      S             B       Ô                    3             e                   Ô       P             t      :                                                     €       ‘             \                   È       ò                    –             É       ²              ï                    Û      h                     :                   û             ¦       A    ÀFa            )             E       [             ­       †             Á       H                    â              d       &    ÈFa            ä             û       Ð             þ       ‹             –        libgfortran.so.3 _gfortran_st_write_done __gmon_start__ _Jv_RegisterClasses _gfortran_transfer_integer _gfortran_st_read _gfortran_st_inquire _gfortran_set_args _gfortran_iargc _gfortran_st_rewind _ITM_deregisterTMCloneTable _gfortran_pow_i4_i4 _ITM_registerTMCloneTable _gfortran_st_write _gfortran_st_read_done _gfortran_transfer_integer_write _gfortran_compare_string _gfortran_set_options _gfortran_st_close _gfortran_getarg_i4 _gfortran_transfer_character_write _gfortran_transfer_real_write _gfortran_transfer_logical_write _gfortran_stop_string _gfortran_transfer_real _gfortran_st_open _gfortran_transfer_character libm.so.6 truncf cosf sinf sqrtf powf log10f libgcc_s.so.1 __powisf2 libquadmath.so.0 libc.so.6 fflush exit sprintf _IO_putc fopen strncmp strncpy signal getpid calloc strlen memset stdout fputs memcpy fclose stderr fprintf memmove _IO_getc __libc_start_main free /cm/shared/apps/mpich2/3.2/gcc/lib:/cm/shared/apps/fftw/gcc/64/3.3.4/lib/ GLIBC_2.2.5 GCC_4.0.0 GFORTRAN_1.0 GFORTRAN_1.4                                                                      p         ui       Â                 `Z'       Î        Æ         ui       Â                  €eù   Ø     „eù   å      `Da                   ÀFa        .           ÈFa        4           €Da                   ˆDa                   Da                   ˜Da                    Da                   ¨Da                   °Da                      ¸Da        
           ÀDa                   ÈDa                   ÐDa        
           ØDa                   àDa                   èDa                   ðDa                   øDa                    Ea                   Ea                   Ea                   Ea                    Ea                   (Ea                   0Ea                   8Ea                   @Ea                   HEa                   PEa                   XEa                    `Ea        !           hEa        "           pEa        #           xEa        $           €Ea        %           ˆEa        &           Ea        '           ˜Ea        (            Ea        )           ¨Ea        *           °Ea        +           ¸Ea        ,           ÀEa        -           ÈEa        /           ÐEa        0           ØEa        1           àEa        2           èEa        3           ðEa        5           øEa        6            Fa        7           Hƒìè[  èZ  èõ HƒÄÃÿ5z1! ÿ%|1! @ ÿ%z1! h    éàÿÿÿÿ%r1! h   éÐÿÿÿÿ%j1! h   éÀÿÿÿÿ%b1! h   é°ÿÿÿÿ%Z1! h   é ÿÿÿÿ%R1! h   éÿÿÿÿ%J1! h   é€ÿÿÿÿ%B1! h   épÿÿÿÿ%:1! h   é`ÿÿÿÿ%21! h    éPÿÿÿÿ%*1! h
   é@ÿÿÿÿ%"1! h   é0ÿÿÿÿ%1! h   é ÿÿÿÿ%1! h
   éÿÿÿÿ%
1! h   é ÿÿÿÿ%1! h   éðþÿÿÿ%ú0! h   éàþÿÿÿ%ò0! h   éÐþÿÿÿ%ê0! h   éÀþÿÿÿ%â0! h   é°þÿÿÿ%Ú0! h   é þÿÿÿ%Ò0! h   éþÿÿÿ%Ê0! h   é€þÿÿÿ%Â0! h   épþÿÿÿ%º0! h   é`þÿÿÿ%²0! h   éPþÿÿÿ%ª0! h   é@þÿÿÿ%¢0! h   é0þÿÿÿ%š0! h   é þÿÿÿ%’0! h   éþÿÿÿ%Š0! h   é þÿÿÿ%‚0! h   éðýÿÿÿ%z0! h    éàýÿÿÿ%r0! h!   éÐýÿÿÿ%j0! h"   éÀýÿÿÿ%b0! h#   é°ýÿÿÿ%Z0! h$   é ýÿÿÿ%R0! h%   éýÿÿÿ%J0! h&   é€ýÿÿÿ%B0! h'   épýÿÿÿ%:0! h(   é`ýÿÿÿ%20! h)   éPýÿÿÿ%*0! h*   é@ýÿÿÿ%"0! h+   é0ýÿÿÿ%0! h,   é ýÿÿÿ%0! h-   éýÿÿÿ%
0! h.   é ýÿÿÿ%0! h/   éðüÿÿÿ%ú/! h0   éàüÿÿ1íI‰Ñ^H‰âHƒäðPTIÇÀ@A HÇÁPA HÇÇA°@ èWýÿÿôHƒìH‹.! H…ÀtÿÐHƒÄø¿Fa UH-¸Fa HƒøH‰åw]ø    H…Àtô]¿¸Fa ÿà€    ¸¸Fa UH-¸Fa HÁøH‰åH‰ÂHÁê?HÐHÑøu]ú    H…Òtô]H‰Æ¿¸Fa ÿ†   €=ù/!  u_UH‰åS»pBa HëhBa HƒìH‹ã/! HÁûHƒëH9Øs$fD  HƒÀH‰Å/! ÿÅhBa H‹·/! H9Ørâè5ÿÿÿÆž/! HƒÄ[]À    Hƒ=0+!  t¸    H…ÀtU¿xBa H‰åÿÐ]é+ÿÿÿ é#ÿÿÿUH‰åH‰}è‰uä‹MäHcÉH‰Èº    ‹Eä‰EøÇEô   ‹Eø‰Eüƒ}ü ~.‹Eü‰EôH‹Uè‹EüƒèH˜¶< uƒ}ü”À¶Àƒmü…ÀuëÒ‹Eô]ÃUH‰åHƒì`H‰}ØH‰uÐH‰UÈH‰MÀL‰E¸D‰M´‹E´H˜I‰ÂA»    ‹U´H‹EȉÖH‰Çè   ‰EøH‹EØ‹ ‰EôH‹EØó‹Eøó*ÀH‹EÀóóYÂóXÁóEðH‹EÐóH‹EÀóóà óYÂó\È(ÁóEìH‹EÐóH‹EÀó óXÁóEè¿@A ¸    èTš  HMèHUðHuìHEôHÇD$DA HÇ$DA A¹@A A¸@A H‰Ç¸    èZ³  H‹E¸H‰Ç¸    è š  ‹Eø…À~4‹T ‰EüLMøLEüH‹MÈH‹UÀH‹uÐH‹EØ‹}´‰<$H‰Ç¸    èV«  ÉÃUH‰åH‰}è‰uä‹MäHcÉH‰Èº    ‹Eä‰Eø‹Eø‰Eüƒ}ü ~3‹Eü‰EôH‹Uè‹EüƒèH˜¶< t‹Eôëƒ}ü”À¶Àƒmü…ÀuëÍ‹Eô]ÃUH‰åHƒìpH‰}ÈH‰uÀH‰U¸H‰M°L‰E¨L‰M H‹E@Ç     H‹E ‹ ‰EàH‹E(‹ ‰EØH‹E0‹ ‰EÜH‹E8‹ ‰EÔL‹MÀL‹E¸H‹MÈH‹U°HuØHEàH}èH‰<$H‰Çèy  L‹MÀL‹E¸H‹MÈH‹U°HuÔHEÜH}äH‰<$H‰ÇèQ  óEàóMÜ.Áz.Át%óEÔóMØó\ÁóMÜóUàó\Êó^ÁóEøóEØóMÔ.Áz.Át%óEÜóMàó\ÁóMÔóUØó\Êó^ÁóEô‹Eè…Àu‹Eä…À„œ  ‹Eè™ÁêЃà)Ѓøu‹Eä™ÁêЃà)Ѓø„°   ‹Eè‰ÂÁêÐÑø™ÁêЃà)Ѓøu‹Eä‰ÂÁêÐÑø™ÁêЃà)Ѓøtx‹EèP…ÀHÂÁø™ÁêЃà)Ѓøu‹EäP…ÀHÂÁø™ÁêЃà)Ѓøt<‹EèP…ÀHÂÁø™ÁêЃà)Ѓøu#‹EäP…ÀHÂÁø™ÁêЃà)Ѓøuéì  ‹Uè‹Eä9ÂuéÝ  ‹Eè…Àu‹Eä‰Eüë‹Eè‰Eü‹Eü™ÁêЃà)Ѓøu-H‹EÈó óMàó\ÁóYEøóMØóXÁóEìH‹EÈ‹ ‰Eð‹Eü‰ÂÁêÐÑø™ÁêЃà)Ѓøu-H‹EÀó óMàó\ÁóYEøóMØóXÁóEìH‹EÀ‹ ‰Eð‹EüP…ÀHÂÁø™ÁêЃà)Ѓøu-H‹E°ó óMØó\ÁóYEôóMàóXÁóEðH‹E°‹ ‰Eì‹EüP…ÀHÂÁø™ÁêЃà)Ѓøu-H‹E¸ó óMØó\ÁóYEôóMàóXÁóEðH‹E¸‹ ‰Eì‹Eè9Eüu9‹Eð‰Eà‹Eì‰EØL‹MÀL‹E¸H‹MÈH‹U°HuØHEàH}èH‰<$H‰Çèo   é‹ýÿÿ‹Eð‰EÜ‹Eì‰EÔL‹MÀL‹E¸H‹MÈH‹U°HuÔHEÜH}äH‰<$H‰Çè6   éRýÿÿ‹EàH‹U¨‰‹EÜH‹U‰‹EØH‹U ‰‹EÔH‹U‰H‹E@Ç    ÉÃUH‰åH‰}øH‰uðH‰UèH‰MàL‰EØL‰MÐH‹EÇ     H‹EøóH‹Eàó .ÁvH‹EÇ    ëH‹Eøó H‹EÐó.Áv
H‹EÇ    H‹EðóH‹EØó .ÁvH‹E‹ PH‹E‰ë&H‹Eðó H‹Eèó.ÁwëH‹E‹ PH‹E‰]ÃUH‰åAUATSHìˆ  H‰½øþÿÿH‰µðþÿÿH‰•èþÿÿH‰àþÿÿL‰…ØþÿÿL‰Ðþÿÿ‹EpH˜I‰ÄA½    ‹ExH˜I‰ÂA»    H‹E

답변1

"스크립트"는 실제로 스크립트가 아니라 컴파일된 실행 가능한 바이너리입니다. 이는 텍스트 파일이 아니며 헤더가 포함되어 있다는 사실에서 ELF분명합니다 .

즉, 이를 변경하려면 해당 소스 코드(컴퓨터에서 사용할 수 없고 어떤 경우에는 전혀 공개되지 않을 수 있음)를 찾아서 변경한 다음 바이너리 실행 파일을 다시 컴파일해야 합니다.

이를 수행하는 방법은 프로그램을 어디서 얻었는지, 소스 코드가 작성된 프로그래밍 언어(바이너리 출력에 있는 라이브러리 이름과 경로로 판단하면 아마도 MPI를 사용하는 Fortran) 및 빌드 시스템에 따라 달라집니다. .

이를 위해서는 실행 파일을 다시 빌드하기 위해 시스템에 하나 이상의 추가 소프트웨어와 소스에서 사용했을 수 있는 모든 종속성(라이브러리 및 헤더)을 설치해야 할 수도 있습니다.

답변2

원본 소스 코드가 없고 절실한 경우 실행 파일을 디컴파일(리버스 엔지니어링)할 수도 있습니다. 이는 어셈블러나 C 코드, 어쩌면 Fortran과 같은 것을 제공할 것입니다.

그러나 원본 소스 코드는 얻을 수 없으며 원본 코드와 동일한 바이너리로 컴파일되는 간단한 지침이 포함된 일부 기본 코드만 얻을 수 있습니다.

이를 이해하고 바꾸고 싶은 문제를 해결하려면 많은 연구가 필요할 수 있습니다. 광범위한 리팩토링, 이름 변경 및 추출 기능을 통해 향후 개발이나 다른 플랫폼으로의 포팅에 사용할 수 있는 소스 코드를 얻을 수도 있습니다.

실행 파일을 C 소스 코드로 다시 변환

관련 정보