首页
社区
课程
招聘
[原创]Anti007的一种脱法
发表于: 2010-1-18 04:05 4762

[原创]Anti007的一种脱法

2010-1-18 04:05
4762
【文章标题】: Anti007的一种脱法
【文章作者】: lovebird/爱鸟
【作者邮箱】: lovebird_ustc#126.com
【作者QQ号】: 1282260064
【软件名称】: 记事本
【下载地址】: 附件中
【加壳方式】: anti007
【保护方式】: Anti007 V1.0-V2.X
【使用工具】: OD dump插件
【操作平台】: XPSP3+VM6
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  说的还是上次那堆记事本,这个比较luck,peid一扫,Anti007 V1.0-V2.X -> NsPacK Private,标准方式加壳
  OD不躲不藏,忽略一切异常。
  0101CEF6 >  81EE 632B3970   SUB ESI,70392B63                         ; 进来停在这儿
  0101CEFC    81C6 632B3970   ADD ESI,70392B63
  0101CF02    897424 FC       MOV DWORD PTR SS:[ESP-4],ESI
  0101CF06    83EC 04         SUB ESP,4
  0101CF09    53              PUSH EBX
  0101CF0A    6A FF           PUSH -1
  0101CF0C    5B              POP EBX
  0101CF0D    2BF3            SUB ESI,EBX
  0101CF0F    5B              POP EBX
  0101CF10    8B3424          MOV ESI,DWORD PTR SS:[ESP]
  0101CF13    83C4 04         ADD ESP,4
  0101CF16    60              PUSHAD
  0101CF17    57              PUSH EDI                                 ; 此处hr esp
  0101CF18    51              PUSH ECX
  0101CF19    83C4 04         ADD ESP,4
  在0101CF17处hr esp,然后Shift+F9 16次,程序运行.
  为此,我们Ctrl+F2重来,然后Shift+F9 15次:
  0101B527    33DE            XOR EBX,ESI
  0101B529    61              POPAD
  0101B52A    5E              POP ESI                                  ; 第15次停在这儿
  0101B52B    51              PUSH ECX
  0101B52C    F7D1            NOT ECX
  0101B52E    59              POP ECX
  0101B52F    C3              RETN                                     ; 返回去
  0101B530    0000            ADD BYTE PTR DS:[EAX],AL
  返回到了这儿:
  0101A179    9C              PUSHFD
  0101A17A    60              PUSHAD
  0101A17B    33D2            XOR EDX,EDX                              ; 此句hr esp
  0101A17D    66:8CE2         MOV DX,FS
  0101A180    0F03D2          LSL EDX,EDX
  0101A183    66:8CE3         MOV BX,FS
  0101A186    66:3BD3         CMP DX,BX
  0101A189    75 03           JNZ SHORT Anti007_.0101A18E
  0101A18B    6A 00           PUSH 0
  0101A18D    C3              RETN
  0101A18E    E8 00000000     CALL Anti007_.0101A193
  0101A193    5D              POP EBP
  0101A194    B8 7C864100     MOV EAX,41867C
  0101A199    2D 62864100     SUB EAX,418662
  0101A19E    2BE8            SUB EBP,EAX
  0101A1A0    8DB5 CFFCFFFF   LEA ESI,DWORD PTR SS:[EBP-331]
  0101A1A6    8B06            MOV EAX,DWORD PTR DS:[ESI]
  0101A1A8    83F8 00         CMP EAX,0
  0101A1AB    74 17           JE SHORT Anti007_.0101A1C4
  0101A1AD    8DB5 DBFCFFFF   LEA ESI,DWORD PTR SS:[EBP-325]
  0101A1B3    8B06            MOV EAX,DWORD PTR DS:[ESI]
  在0101A17B处hr esp,不一会,程序运行出错,关闭后,来到OEP:
  0100739D      6A            DB 6A                                    ;  CHAR 'j'
  0100739E      70            DB 70                                    ;  CHAR 'p'
  0100739F      68            DB 68                                    ;  CHAR 'h'
  010073A0      98            DB 98
  010073A1      18            DB 18
  010073A2      00            DB 00
  010073A3      01            DB 01
  010073A4      E8            DB E8
  010073A5      BF            DB BF
  010073A6      01            DB 01
  010073A7      00            DB 00
  010073A8      00            DB 00
  010073A9      33            DB 33                                    ;  CHAR '3'
  010073AA      DB            DB DB
  010073AB      53            DB 53                                    ;  CHAR 'S'
  010073AC      8B            DB 8B
  010073AD      3D            DB 3D                                    ;  CHAR '='
  010073AE      CC            DB CC
  010073AF      10            DB 10
  010073B0      00            DB 00
  010073B1      01            DB 01
  010073B2      FF            DB FF
  010073B3      D7            DB D7
  Ctrl+A分析一下:
  0100739D   .  6A 70         PUSH 70
  0100739F   .  68 98180001   PUSH Anti007_.01001898
  010073A4   .  E8 BF010000   CALL Anti007_.01007568
  010073A9   .  33DB          XOR EBX,EBX
  010073AB   .  53            PUSH EBX                                 ; /pModule => NULL
  010073AC   .  8B3D CC100001 MOV EDI,DWORD PTR DS:[10010CC]           ; |kernel32.GetModuleHandleA
  010073B2   .  FFD7          CALL EDI                                 ; \GetModuleHandleA
  010073B4   .  66:8138 4D5A  CMP WORD PTR DS:[EAX],5A4D
  010073B9   .  75 1F         JNZ SHORT Anti007_.010073DA
  010073BB   .  8B48 3C       MOV ECX,DWORD PTR DS:[EAX+3C]
  010073BE   .  03C8          ADD ECX,EAX
  010073C0   .  8139 50450000 CMP DWORD PTR DS:[ECX],4550
  010073C6   .  75 12         JNZ SHORT Anti007_.010073DA
  010073C8   .  0FB741 18     MOVZX EAX,WORD PTR DS:[ECX+18]
  010073CC   .  3D 0B010000   CMP EAX,10B
  010073D1   .  74 1F         JE SHORT Anti007_.010073F2
  010073D3   .  3D 0B020000   CMP EAX,20B
  直接用脱壳插件dump就行。
  
  
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  此例借鉴了“最后一次异常法”的思想,使用“最后一次硬件断点法”,直接来到OEP。前面脱的一个anti007的变形壳,
  最后也是出错关闭来到OEP。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年01月18日 4:06:28

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
x谢谢分享,辛苦了
2010-1-18 12:58
0
游客
登录 | 注册 方可回帖
返回