
                     
                    (孮 ⥪㥬 )

        ᨫ   ࠢ     ,  ⮡    ஢
 ᯮ塞  ணࠬ ( ଠ PE) ⠪, ⮡  ᥭ 
  ᨬ ६.
       䨪樥      ணࠬ । ,
 ᪠,  ᮬ.  祢,  ᠬ ⥫    ஢.
   ஢騪 㤥 ⥣஢   ணࠬ.

     室   ⮣,  ࠧ  3 ,    
 : ?, ?  ?.
      -   樨, 묨 㤥  㥬 PE
 䠩.    ⮬,       樨, ᪠   
 ⠬䨧    .
       -    ⮬,    ணࠬ ⠢ 樨
 ஢騪,      ।  .  ਭ樯,  ⭮⥫쭮
 ;  ⮣,  ࠧ     짮⥫ .
       ⮩      㤥  ,       ந묨
 ﬨ ணࠬ ⠢ 樨 ஢騪,  , 㣨
 ᫮,  ࠧ,    ᮡ  ணࠬ.

                                   

     襩  祩    ⠢    ﬨ  PE 䠩 ᢮
 ᮡ⢥.    -  ⮣,            䠩    
 -类  易      㣮,         ᮡ
     痢.  ,     痢   ᮡ
   㣨,    ⠪  ,    稬    䠩   㤥
 .
     ਬ:  ⠢  । 䠩 ,   ᬥ饭 
 ⮪,   ᫥ ⮩ 樨.   ᬥ饭 ன ⪨ 
 ,  室  ࠢ   室   .  
 ⠪  ࠢ,  ,  㢥        ᫮
 室,        ᮡ  ᬥ饭 ⮪,  ᫥
  ,  ⠪ .

     裡    ⠬ 䠩 뢠  ⮫쪮 ᮫ (ᬥ饭),
     ⭮⥫  ( 室),   室   .
   ᮫  裡    ।⢮   PE 䠩,
          ⠡  䨪ᠯ  (५権).    宦
 ⭮⥫  ᬥ饭  ॡ  ࠧ    ,  騩 
 ணࠬ,  ⤥ 樨.

     室  ᪠, 室 ࠧ  䠩   
 塞 魮,  ,  ᮡ 䠩 .

     ஬  ᥣ  祣,          ଫ    
 㭨ᠫ쭮 .
       ,    ,    ।    ।⢮,  饥 
 ஢      PE   䠩,     祬    ࠧ  ⮤
 䨪樨  ⮩    㤥 ਤ㬠, ⥬ . - ᪨
 ਯ    ᥬ  䠩,  -  ⥣  樨 ਯ 
 ﬨ 䠩,  ..

     ⠪,    ࠧ  5 ⠯:
     1.  㦠 PE 䠩    㠫 ᠬ; ᮧ ⠡
 䫠    ⠢塞   , 㪠뢠騥,   ᮮ⢥騥
   㪠⥫ﬨ/,    .   ஢ 砫 
  䠩.
     2.  ᥬ㥬  䠩  (室    ࠧ    樨),
 ⭮    ⠡  䫠   ଠ樥  㪠⥫. 
   ⠪  ,   ᥬ஢  訡, ९⠢
     .    訡  ⠫쭠,  ⮬  ⢥  樨
 室  ᪫. ᫨  ᭨ ⭮襭 ண ⪠ 䠩
      , 䠩 ࠡ뢠  ᫥.
     3.  ।⠢塞  䠩      ᯨ᪠ : 権, ᪮ ,
 ⮪    㪠⥫.        ୮  室   
 室.      ᯨ᮪   ᮧ   ᪫⥫쭮   -   
 㫨஢  ⠬.
     4.  뢠 ᪨  (譨  ⭮襭  ), 
 頥  ᯨ᮪,  ਬ  ᮢ뢠 ᪨ ᣥ७ ਯ 
 ﬨ 䠩.
     5.  ࠥ  䠩    ᯨ᪠;    ਬ ⠡ 䨪ᠯ; 
 㢥祭    ᫮  室  뢠  ᬥ饭  䠩;
 뢠 ஫ 㬬 䠩.

                         

       ᠬ  ,  筮,    ⮨  㦥 祬 : ஬
 ᠭ    蠣     祩,     
 ࠡᯮᮡ   ணࠬ.      ᭮   㤭,   ⢥,
 砥    ᥬ஢.         ﬨ,
 ਬ,  --    ࠭祭 ⪠ .
       ஡  ᥬ஢      祬:      , 
    ⭮,      䨪ᠯ.    ⠪    뢠 
 ணࠬ,    - .       뢠 .
 :    㧭, 室   ⮩ ⪥  (- 楤),
   ?
     訡      ᮡ ᫥饥: , ਭ  ,  㤥
 䨪ᥭ,  ⠪     ࠢ, ࠧ ந . 
 䨪   ⮬   jxx, call  .. ᫨ , ,  
 ਭ    ,      㤥 䨪ᥭ,   ⮦
 ॢ .

     ⮬  室    訡筮  ⫨    .
     楤  뫮    ᨣࠬ,  
     ⠪  ᮢ.   뫮  ᬠਢ jmptable',  
   筮.
       뫮  ࠡ ⮫쪮  䠩 । ,  ,
 ⠪,       ᥪ樨 室 ⮫쪮   祣 .
       ࠧ  ,  祣    ⥫  .   , ⮡
 ⨢ ஢﫨  䠩  -.    ⠪ 䠩.
       ,    訡    ४樨  䠩    -
 ࠢ쭮   ᥬ஢,      --  -  ᠭ  
 ஡.  室  :  ࠭  ⢮ ࠡ뢠 䠩, 
 ᪮쪮    ᥬ    㤠.

                                  

        ਢ   ⪮   ᠭ      蠣,  室  
 ४樨 䠩.

 - ஢塞 PE 䠩   (稥 ⠡ 䨪ᠯ  ..)
 - 뤥塞   㠫 ࠧ 䠩   
    䫠    ࠧ 䠩
 - 㦠  㠫 ᠬ:
   1. ᮢ   PE  䠩
   2. ᥪ樨 䠩
 - ࠧࠥ PE , 㥬   㪠⥫  ,
   砥 砫   ᥪ権  ⪨  ..
 - ࠧࠥ 
 - ࠧࠥ ᯮ
 - ࠧࠥ 䨪ᠯ
 - ࠧࠥ 
 - 饬  䠩 砫 楤  ᨣࠬ (⨯ push ebp/mov ebp,esp)
    砥  -᫥饣-
 - 砥  室
 - ᥬ㥬 䠩,  ᠭ   " 樨";
   ,   ⫨稩:    祭--
   -᫥饣- ⪨,  饬 ⪨---뫠-㪠⥫,
    ஢塞,     . (. )
 - ᮧ ᯨ᮪  , ⮪, 㪠⥫  ..
   ⨬,   ⮬ ᯨ᪥ 㦥  ꥪ 㫥  (⪨),
     ந室 室   ᮪ ஢ ࠪ樨;
      ᯨ᮪ -- ᢮ࠧ ।⠢ 室.
   ᫥ 室   ᨢ  ᯨ, ᨢ   㦭.
 - 塞 ᯨ᮪;
    ६ ⫠  ⠢ NOP'  ᥬ ﬨ 䠩
 - 塞  㠫    ᥩ ᯨ᪠
 - 뢠 ⠡ 䨪ᠯ
 - 뢠 祭 㪠⥫
   (.. rva, 䨪ᠯ  ⭮⥫ ᬥ饭 ᫮ 室);
   ᫨  ᫮ 室 諮 㢥,
    塞    㠫 ᮢ
 - ᥬ㥬 ᯨ᮪ (ᮡࠥ     ᨢ)
 - 뢠 䠩  
 - 뢠   䠩 ૥, ᫨  
 - 뢠 ஫ 㬬, ᫨  뫠 㫥

          ࠧ  ⨯  "ࠧࠥ  PE  "  /  "ࠧࠥ
 "?   ,   뤥塞 ।  ⪨, 㪠⥫  㣨
 ᯥ樠  ꥪ   ⠢塞    䫠 ᮮ⢥騥 .
 ਬ,      pe_header+28h (28h=EntryPointRva)  䫠
 ⨯  FLAG_DWORD   FLAG_RVA,   ,    뢠, 㤥
 祭  FLAG_LABEL  FLAG_CREF.

  ᯥ樠 ꥪ  ⢮  ᯨ᪥?

 1. ⪨,   ,   뫠 RVA  FIXUP'.
 2. RVA,   ,  㪠뢠  .
 3. FIXUP,   , ⠪   RVA,  + IMAGEBASE,
    ⮬    ᥭ  ⠡ 䨪ᠯ.
 4. ⠪ 뢠 DELTA,   ࠧ  ᠬ  ⮪.
 5. 
 6.  

         ⮬,      ⫨砥      .  ,   
 ᬠਢ       뫪 ⮫쪮 १ 㪠⥫ (rva 
 fixup'),      뫮  १  call/jmp.  ⠪,  ६  ।
 楤    ࠧࠥ        樨.    樨
 ஢塞,         筮, ⨯ 00 00, FF FF, F4 (hlt), CD
 (int),    ..,    ⠪ ,   楤 PE 䠩 
 砥.  ᫨ -  ⮢ । 樨 ᮤন
 䫠  ⨯  "⪠"    "",     楤. ᫨ 
    ⭮⥫      (jmp,call,jxx,jecxz,...),       
 뢠    -  ਫ筮,             
 । 㣮 樨.   ⠪ ஢ન   , 
  㤥  RET  JMP.

     ,   ⠪ 樨,  ⫨    筮
 ᫮.  ਬ,  ⠪  ꥪ,    ⪠  (label), த   
 ⢮  । 樨, ᣥ७ hll ஬.  
 - ७ . 祭  . ᬮਬ ⨯ 砩.

    avpbase.dll:
    100050D3  83E904            sub     ecx, 4
    100050D6  720C              jb      100050E4
    100050D8  83E003            and     eax, 3
    100050DB  03C8              add     ecx,eax
    100050DD  FF2485F0500010    jmp     dword ptr [100050F0+eax*4]      (1)
    100050E4  FF248DE8510010    jmp     dword ptr [100051E8+ecx*4]
    100050EB  90                nop
    100050EC  FF248D6C510010    jmp     dword ptr [1000516C+ecx*4]      (2)
    100050F3  90                nop
    100050F4  00510010          dd      10005100
    100050F8  2C510010          dd      1000512C

       ,  100050F0 室  । 樨 (2),   
    ६   ᯮ      樨  (1).  祬  ⠪  ந室,
   ᫮.    १,    樨  (2)    
 㢥७  ᪠,            묨.    ,
 ⮬᪨  ।, 뫮   室 ᠭ 100050F4 - 4
   100050EC + 4.  ,   䨪 ⠪ ,
  䠩 ਤ ⠢  .

      , ⥫ ਬ  廊 蠫.

    FAR.EXE:
    004474D8  B8E1C24200        mov     eax,0042C2E1 ; ==42C350-6Fh   ; (1)
    004474DD  6A00              push    00
    004474DF  6800000100        push    00010000
    004474E4  83C06F            add     eax, 6F      ; ==111
    004474E7  50                push    eax
    004474E8  E8AF180100        call    00458D9C
    ...
    0042C2DB  E8B0450200        call    00450890
    0042C2E0  83C408            add     esp, 08                       ; (2)
    0042C2E3  8D9500FFFFFF      lea     edx,[ebp][0FFFFFF00]
    ...
    0042C350  55                push    ebp
    0042C351  8BEC              mov     ebp, esp
    0042C353  833D5054460003    cmp     d,[000465450], 03

     ,       ᥬ 祬, 뢠   㥢 誠. 
 ᪨   16-⭮       32-  ਫ,  ⨯  ⨢ᮢ 
 ଠ஢.  ᥬ ந⥪騬  .

                                   

     ᬮ      ,  祬- ࠡ⠥. 뢠 
 ,  ⠪ ᪠  द ⨭, "䠫 室 ஬".

       ᠭ    ଠ  C++,  ࠢ    ᮢ    .
 ᭮  㭪 engine()  㥢 祩 ࠬ஢, ,   ᫥,
 ᠬ ࢮ,  ᫥    ᪮쪮 ७ ணࠬ. 
     뢠  kernel (   )  室  䠩
 engine.cpp  &  .hpp; ᮮ⢥⢥   ⠭.  ୥ 뢠
 ⠪  뢠 譨 ᪨  (mutate.cpp),    
   ஢  짮⥫. ,  , ᮡ⢥ 䥪,
   ᪫⥫쭮    ᯨ᪮   ,  㤥 뢠
 㩭ﬨ  (hooy),      㦥  ⪠뢠.   㩭   ⪨,
 ,    ,  ᫮    ,   祬 ਫ  砫.  
 ,    孮  ᠭ    筮  ⠪ ,    RPME,
 ⮫쪮 RPME  祭  ,  䠫 ।祭  ࠡ  PE
 䠩.

      १, ⥩訩 ⮤ ࠦ 䠩 ⠪:

 1.     騥 樨; ᫥ ࢮ 樨
    ⠢ JMP  ,  ᫥ JMP' - ஢ ⥫ .
 2. 筮  ਯ.
 3. 筮   맮 ਯ.

     祬,    ⮫쪮     ਠ⮢.  ਠ⮢   
 祭  (롨 㤥 ࠭).

                              

     ०  ᥣ,      ,  祭  . 
 ⮬,          ਢ 䠩;    ଠ쭮 ⮦.
   ,        RPME, ।⠢  짮⥫.
 ।  맮    뤥    ,   32. ⥣
 樨  쬠 ᯥ᪠:  㤥 ⮫쪮 訢 , 
   --  ⤠.     䠩 ᯮ    
 ,  ..  ᫥       ⢮ 뤥 
 㦭     0.   ந ⠪  release. 쭮
   ᯮ  (17*SizeOfImage)     ६  ᨢ,
    40   / ᯨ᪠.
         㥬,      ᮣ    㦥  ᠭ묨
 ࠢ  ⥪ "ॡ  ".
           ࠡ    ring-0.    -  讣  ⢠
 ॡ㥬   直 .
      ࠡ ,   ६ 室  ᥬ஢,
 ।᪠    ६  ᫮.  室    ⮣,    饥 ६ 
 ࠡ  䠩   ⠬,  ॠ⠩.
     ᭮,    ⠪        ⥬ ᮡ,
 ⨯  openfile,  ⠪        ᫥ 뢠   ⥩襣
   ।  ।祩  ࠢ  . । 䠩  
 ⢫ ⮫쪮  ⤥쭮   .

                               

        ࠡ뢠  ⮫쪮  ⠭  䠩.    ⠥
 ⠭, ᫨    ᥪ権  , ⨯ .text, .data
   ..   ⠫  ⠥  䠩 㯠  
 㥢.
       ⠭ 䠩 ਭ,    ⮫쪮 
 ࢮ  (  )  ᥪ樨.      ᫥   ⢮
 ᥬ஢.

                             

       ᪠,      .   ਪ   ⠪
 뢠    ᨣ, ଫ   ⠪    ᪨
 .
        ᨣ 室 2 㭪樨:
 1.   䠩 ᪮  
 2.  ଠ樨   ᪠   ⥪
         ।  ᥬ஢ 䠩  ᨣ 㦠
 ᢮  ,      䠩  ᨣ ⪮   ⠢  䫠
 "-᫥饣-".
       ᫥  ᥬ஢     ᨣࠬ 
 뢭 ᪮ .

     ਬ⥫쭮  ᠬ,  ᨣ     ७ᨬ
     ᮬ;    㤥  ᮧ      ࠡ⪨
  ᪮.

     ன      ⠥  ஥  (ﭭ)  ᫮   
 (権),  ᮤঠ 䨪ᠯ   ᫮ 室.

       २⢠    ⥪  ᨣ?  த  ,   
     䠩  CMPSB  砬 ᨣ.    ⠪
 㫥,   .   ६ 室 .
         ⢮  ᥬ஢    .     
 楤,  ᥬ  ய⨫,   .
       ⮬,      ᨣ, ᪠, 8 ,  筮 让
 ,  ᥬ ⠭ 쬠 魮 㪮.   8 
     ,     -- ,  .

     㣮  ,          㦭  ४⭮  ࠡ뢠 
 楤,    ᥬ    ।   ;   
   ᯮ.

                                                                     Z0MBiE
