本类共有 70 篇文章,今日更新 0

手动脱壳进阶第一篇Petite2.2 续之Patch IAT+CRC

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 18:30:50 | 浏览: 人次 ]


【脱文动画】http://cms.cnxhacker.net/donghua/crack/200607/247.html

【脱文标题】 手动脱壳进阶第一篇Petite2.2 续之Patch IAT+CRC

【脱文作者】 weiyi75[Dfcg]

【作者邮箱】 weiyi75@sohu.com

【作者主页】 Dfcg官方大本营

【使用工具】 Peid,Ollydbg,ImportREC1.6f

【脱壳平台】 Win2K/XP

【软件名称】 PEtite 2.2加密的记事本
  
【软件大小】 17.3k

【下载地址】 本地下载Petite2.2.rar

【加壳方式】 PEtite 2.2 -> Ian Luck

【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

--------------------------------------------------------------------------------

【脱壳内容】

这个壳入口和IAT通过ImportREC1.6f辅助是非常容易修复的,但懒人还是喜欢脚本一步到位,像普通壳一样脱。

运行ImportREC,选择这个进程。把OEP改为000010cc,点IT AutoSearch,点“Get Import”,看到指针无规律被重定向。

以0062EC处的指针突破,点右键反汇编/16进制显示,看到指针都被重定向了。用跟踪等级1是容易修,但脱衣服就要强★

通过IR告诉 IAT从000062E0开始,大小248

从第一个指针开始,4062E4

IAT重定向就是先前IAT是正确的,然后修改IAT为IR不认识的地址。

OD载入程序

忽略所有异常

命令行

hw 4062e4

F9运行中断3次

004059C2     8B06                            mov eax,dword ptr ds:[esi]
004059C4     85C0                            test eax,eax
004059C6     0F84 81000000                   je Notepad.00405A4D
004059CC     0FBAE0 1F                       bt eax,1F
004059D0     73 2B                           jnb short Notepad.004059FD
004059D2     25 FFFF0000                     and eax,0FFFF
004059D7     2B4424 0C                       sub eax,dword ptr ss:[esp+C]
004059DB     0F82 AB000000                   jb Notepad.00405A8C
004059E1     3B4424 08                       cmp eax,dword ptr ss:[esp+8]
004059E5     0F83 A1000000                   jnb Notepad.00405A8C
004059EB     C1E0 02                         shl eax,2
004059EE     034424 04                       add eax,dword ptr ss:[esp+4]
004059F2     8B00                            mov eax,dword ptr ds:[eax]
004059F4     03C7                            add eax,edi
004059F6     8906                            mov dword ptr ds:[esi],eax
004059F8     83C6 04                         add esi,4
004059FB   ^ EB C5                           jmp short Notepad.004059C2
004059FD     03C5                            add eax,ebp
004059FF     50                              push eax  //放入IAT函数名
00405A00     50                              push eax
00405A01     57                              push edi
00405A02     FF95 94070000                   call dword ptr ss:[ebp+794]    ; kernel32.GetProcAddress
//GetProcAddress 获取正确地址
00405A08     85C0                            test eax,eax
00405A0A     74 7F                           je short Notepad.00405A8B
00405A0C     FF4C24 28                       dec dword ptr ss:[esp+28]    //是否加密指针
00405A10     7D 1F                           jge short Notepad.00405A31  //不跳就加密,如果修改这里就遭了,程序异常,不跳IAT就加密,就连修改S标志也不行,怒!

************************************************************************************

找到判断位置,重启动OD

bp GetProcAddress

Alt+F9返回

bc GetProcAddress

修改

00405A10     7D 1F                           jge short Notepad.00405A31



00405A10     EB 1F                           jmp short Notepad.00405A31

然后找到循环出口,并处理最后的跳转。
************************************************************************************

00405A12     8B5424 24                       mov edx,dword ptr ss:[esp+24]
00405A16     C602 E9                         mov byte ptr ds:[edx],0E9
00405A19     2BC2                            sub eax,edx //修改正确地址
00405A1B     83E8 05                         sub eax,5  //修改正确地址
00405A1E     8942 01                         mov dword ptr ds:[edx+1],eax
00405A21     8BC2                            mov eax,edx  //重定向
00405A23     83C2 05                         add edx,5
00405A26     895424 24                       mov dword ptr ss:[esp+24],edx
00405A2A     83E2 07                         and edx,7
00405A31     8906                            mov dword ptr ds:[esi],eax      //写入正确的指针
00405A33     873C24                          xchg dword ptr ss:[esp],edi    //这里中断,往上看
00405A36     83C9 FF                         or ecx,FFFFFFFF
00405A39     33C0                            xor eax,eax
00405A3B     F2:AE                           repne scas byte ptr es:[edi]
00405A3D     FD                              std
00405A3E     F7D1                            not ecx
00405A40     4F                              dec edi
00405A41     F3:AA                           rep stos byte ptr es:[edi]
00405A43     5F                              pop edi
00405A44     FC                    &nbs

[1] [2] [3] 下一页

广告位