• 标 题:脱PEX V0.99b bart^crackPL的壳。 (6千字)
  • 作 者:小球[CCG]
  • 时 间:2002-5-24 16:58:01
  • 链 接:http://bbs.pediy.com

脱PEX V0.99b bart^crackPL的壳。
这个壳的强度一般,不过有对ice和trw的陷阱,我们要设法跳过去。
工具:trw、ice、improtrec等。
我不说是哪个程序,但是如果你要想跟我一同研究探讨的话请Q我。
好了,来吧!
真正的入口?用冲击波就可以找到:4261F4。但是我们还要手动试试。
用trw载入它,load。
017F:00447FFE  INVALID                                                        
017F:00448000  JMP      004480FA    <----入口,按F8继续跟。  
017F:00448005  OR        EAX,C4C4C40A                                         
...............
017F:004480FA  PUSHAD                                                          
017F:004480FB  CALL      00448101  <-----注意!你可以看到这个CALL的地址448101与4480FB很近,所以以后看到有这样的CALL都要按F8单步执行。
017F:00448100  CALL      E8494588                                             
017F:00448105  ADD      [EAX],EAX                                             
017F:00448107  ADD      [EAX],AL                                             
017F:00448109  JMP      D632026B                                             
017F:0044810E  AND      AL,[EAX+00]                                           
017F:00448111  CALL      0044831C                                             
017F:00448116  CALL      032F8A06                                             
017F:0044811B  INT      20 VXDCall 9A24,24FF                                 
017F:00448121  MOV      SI,4647                                               
017F:00448125  CALL      0044812B                                             
017F:0044812A  CALL      4023:27958D59                                         
017F:00448131  ADD      AL,CH                                                 
017F:00448133  ADD      [EAX],EAX                                             
017F:00448135  ADD      [EAX],AL                                             
017F:00448137  IMUL      EBX,[EAX+66],E84A4DBF                                 
017F:0044813E  ROL      DWORD PTR [ECX],00                                   
017F:00448141  ADD      [EBP+01E8F952],CL                                    
017F:00448147  ADD      [EAX],AL 
你按几次F8就会来到陷阱处了,小心咯!会死机的。
017F:00448142  LEA      EDX,[EDX-07]                                          
017F:00448145  CALL      0044814B                                              
017F:0044814A  CALL      0010E9AA                                             
017F:0044814B  POP      EBX      <----就是这里                             
017F:0044814C  PUSH      9AE2FFCC  <-----置陷阱                                 
017F:00448151  JMP      ESP        <----掉入陷阱咯!我们进去看看!
017F:00448153  IMUL      EDI,EDI,402545A5                                     
017F:00448159  ADD      CL,CH                                                 
017F:0044815B  CALL      00448119                                             
仔细看看:esp下的值。
EAX=00000000  EBX=0044814A  ECX=00448142  EDX=00448154  ESI=81654647       
EDI=00004A4D  EBP=00045E34  ESP=0068FE08  EIP=0068FE08  o d I s Z a P c   
CS=017F  DS=0187  SS=0187  ES=0187  FS=4B8F  GS=0000                     
哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪dword哪哪哪哪哪哪腜ROT哪?0)哪
0187:0068FE08 9AE2FFCC  0068FF68  004481F1  00045E34      ....h.h...D.4^..    
0187:0068FE18 0044815B  00000000  81652CD8  0068FF78      [.D......,e.x.h.    
0187:0068FE28 0068FE3C  00000000  81652D38  81652CF8      <.h.....8-e..,e.     
0187:0068FE38 00448000  BFF8B86C  00000000  81652CD8      ..D.l........,e.    
0187:0068FE48 00000000  74746F4C  00797265  00455845      ....Lottery.EXE.    
哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪腜ROT32
017F:0068FE02  F7BFFFFFFFFF        IDIV      DWORD PTR [EDI-0001]              
017F:0068FE08  CC                  INT      3  <----会来到这!阿!明白了应该是利用int 3来判断是否被调试工具调试。按F8就会非法操作了。我把数据栏你的数据9AE2FFCC改为9AE2FF4A,这样就不会出错了。    
017F:0068FE09  FFE2                JMP      EDX                               
017F:0068FE0B  9A68FF6800F181      CALL      81F1:0068FF68                     
017F:0068FE12  44                  INC      ESP                               
017F:0068FE13  00345E              ADD      [EBX*2+ESI],DH                   
017F:0068FE16  0400                ADD      AL,00                             
017F:0068FE18  5B                  POP      EBX                               
017F:0068FE19  81440000000000D8    ADD      DWORD PTR [EAX+EAX+00],D8000000   
...改后的程序:
017F:0068FE02  F7BFFFFFFFFF        IDIV      DWORD PTR [EDI-0001]              
017F:0068FE08  4A                  DEC      EDX                              
017F:0068FE09  FFE2                JMP      EDX                               
017F:0068FE0B  9A68FF6800F181      CALL      81F1:0068FF68
......按F8继续 
017F:004481D9  32C6                XOR      AL,DH                            
017F:004481DB  D2C0                ROL      AL,CL                            
017F:004481DD  D3C2                ROL      EDX,CL                           
017F:004481DF  8807                MOV      [EDI],AL                         
017F:004481E1  47                  INC      EDI                               
017F:004481E2  49                  DEC      ECX                               
017F:004481E3  75D0                JNZ      004481B5                         
017F:004481E5  E801000000          CALL      004481EB                         
017F:004481EA  E883C4040F          CALL      0F494672                         
017F:004481EB  83C404              ADD      ESP,04                           
017F:004481EE  0F0B                UD2              <----这里小心,按F6,移动光标到4481FD后按F7。跳过这里。                           
017F:004481F0  E82BD2648B          CALL      8BA95420                         
017F:004481F5  028B20648F02        ADD      CL,[EBX+028F6420]                 
017F:004481FB  58                  POP      EAX                               
017F:004481FC  5D                  POP      EBP                               
017F:004481FD  C3                  RET                                         
....以后就没有什么了,多数用F8+F6+F7就可以搞定,要注意跳过循环。这可要一定的技巧,就看你的了。很快就会转入660XXX的层解还原了,你可以看到基址、IAT和部分API里面的函数了,这可是事后修复IAT的参照阿!
可以直接bpx 4261f4,然后makepe了。