| 
注册时间2008-2-23
阅读权限10
最后登录1970-1-1UID46849 周游历练 
 
 该用户从未签到 | 
 
| 本人也为新手,大牛们别笑,发此贴只为新手学习只用。本节用ESP定律脱壳此脱法很容易很适合新人脱难度不大的壳! 
 用PEID查壳为ASPack 2.12 -> Alexey Solodovnikov
 
 用插件VEra1.5查壳为 Error, may be it's not ASProtect!   --说明只是ASPack 2.12的壳
 
 
 第一章:
 OD加载程序,入口地址为:
 004BE001 >  60              pushad    ——F8下去
 004BE002    E8 03000000     call    GameCent.004BE00A  ——到这里看寄存器,就是OD最右上角的里面
 上面显示有EAX ECX等等的那个窗口 右键点击ESP-                                                       在数据窗口中跟随 看OD的最左下角的窗口里,(显示方式最好为长形-地址)  里面有行这个 0012FFA4  7C930208  ntdll.7C930208 右键-断点-设置硬件访问断点-WORD-直接F9,看文章第2章
 
 004BE007  - E9 EB045D45     jmp     45A8E4F7
 004BE00C    55              push    ebp
 004BE00D    C3              retn
 004BE00E    E8 01000000     call    GameCent.004BE014
 004BE013    EB 5D           jmp     short GameCent.004BE072
 004BE015    BB EDFFFFFF     mov     ebx,-13
 004BE01A    03DD            add     ebx,ebp
 004BE01C    81EB 00E00B00   sub     ebx,0BE000
 004BE022    83BD 22040000 0>cmp     dword ptr ss:[ebp+422],0
 
 
 第二章:
 上面的F9运行停止后显示为下面的代码:
 下面的代码为红色的跳转 F8跳过来
 004BE3B0   /75 08           jnz     short GameCent.004BE3BA
 004BE3B2   |B8 01000000     mov     eax,1
 004BE3B7   |C2 0C00         retn    0C
 004BE3BA   \68 AC894900     push    GameCent.004989AC
 
 OD停在(004BE3BA)处 这里按F7吧-因为快到OEP了!
 
 004BE3BF    C3              retn    到这里的时候是回跳retn是回跳的命令(我说的不知道对不对哦,反正是这个意思)
 至于回跳到哪,看堆栈里面显示--返回到 004989AC (GameCent.004989AC)
 下面就别按了,看第三章。
 
 
 004BE3C0    8B85 26040000   mov     eax,dword ptr ss:[ebp+426]
 004BE3C6    8D8D 3B040000   lea     ecx,dword ptr ss:[ebp+43B]
 004BE3CC    51              push    ecx
 004BE3CD    50              push    eax
 
 
 第三章:
 显示如下:
 004989AC    55              push    ebp             这个就是Delphi的PE头,也就是说我们已经到了OEP,
 004989AD    8BEC            mov     ebp,esp         记住这些头代码,下面就可以脱壳修复。看第4章。
 004989AF    83C4 F0         add     esp,-10
 004989B2    53              push    ebx
 004989B3    B8 4C874900     mov     eax,GameCent.0049874C
 004989B8    E8 AFDAF6FF     call    GameCent.0040646C
 004989BD    8B1D ECA94900   mov     ebx,dword ptr ds:[49A9EC]        ; GameCent.0049BBF0
 004989C3    8B03            mov     eax,dword ptr ds:[ebx]
 004989C5    E8 5EB1FDFF     call    GameCent.00473B28
 004989CA    8B03            mov     eax,dword ptr ds:[ebx]
 004989CC    C740 78 6400000>mov     dword ptr ds:[eax+78],64
 004989D3    8B03            mov     eax,dword ptr ds:[ebx]
 004989D5    C780 80000000 6>mov     dword ptr ds:[eax+80],64
 004989DF    8B03            mov     eax,dword ptr ds:[ebx]
 004989E1    C740 74 983A000>mov     dword ptr ds:[eax+74],3A98
 004989E8    8B0D 60A84900   mov     ecx,dword ptr ds:[49A860]        ; GameCent.0049C9BC
 004989EE    8B03            mov     eax,dword ptr ds:[ebx]
 004989F0    8B15 70984800   mov     edx,dword ptr ds:[489870]        ; GameCent.004898BC
 004989F6    E8 45B1FDFF     call    GameCent.00473B40
 
 第4章:
 脱壳用工具LordPE这个工具网上很多可以下载  在程序里找到我们脱壳的文件,右键-修正镜像大小-完整转存,文件名自订
 这下脱壳就好了,下面是修复。
 修复用工具Import,网上也有下,现在去OD在OD里面直接右键-用OllyDump脱壳调试进程
 显示为什么修正地址啊 大小啊 入口点地址之类的,那些不用管了,直接看入口点地址-修正为-这个里面的数据,
 我的显示为989AC,复制这数据,去Import里,选择DLL找到我们要脱的文件进程,会加载很多的数据和进程不管它,把我们复制的数据写到里面的OEP里,点击自动查找(显示可能发现了原始IAI地址....)再点击获取输入表,这样要修复的文件数据全找来了,下面再点击修复转存的文件,找到我们脱壳后的那个文件选择就行了,Import 最下面提示。。。保存成功
 
 
 本人用的所有软件全为中文版,如你是英文的,可能有地方不对 建议英文版,我英文不济,所以。。。。。
 
 好了 上面的就是ASPack 2.12 -> Alexey Solodovnikov的脱壳过程,供新手学习,见笑处,大家谅解哦。。。。
 后面其他的壳陆续更新,本课为第一课,没有图片说明 以后我会加上图片,那样看起来会更好些。。
 
 [ 本帖最后由 d78063346 于 2009-9-30 14:25 编辑 ]
 | 
 |