现在的位置: 首页 > 综合 > 正文

壳乱弹单步分析(5)破解教程

2012年06月01日 ⁄ 综合 ⁄ 共 4082字 ⁄ 字号 评论关闭

【破解作者】 layper
【作者邮箱】 layper2002@yahoo.com.cn
【作者主页】 www.sy135.com
【使用工具】 peid,od,
【破解平台】 Win9x/NT/2000/XP
【软件名称】 壳乱弹单步分析(5)
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

写到这篇,我感觉在分析这个壳的过程中学到了很多东西(虽然很多错漏),我很早就想单步分析壳了,但一直下不了决心,谁知道在这个胡
侃的文章中我竟然实现了这个想法.呵呵,太好了.其实在国外,我们crack经常研究的一个项目是逆向工程(Reverse Engineer),
就是把程序的源码用crack工具逆向出来,这是我们学习编程和系统低层的一种好办法,但可惜,在我们国内似乎非常少看
见这种文章,我这种单步分析的办法虽然不是逆向工程,经过前几篇的分析后,我确实感受到了逆向工程的好处,真希望逆向工程
在我们这里发扬光大.
废话少说,继续分析我们的ASProtect 1.2x - 1.3x壳,经过上次的代码之后,我们返回了这里
00FE1000    90                      nop                      ;这个nop估计是增加系统的兼容性吧
00FE1001    60                      pushad                   ;保存所有寄存器的数据
00FE1002    E8 40060000             call 00FE1647            ;跟进
00FE1007    EB 44                   jmp short 00FE104D

00FE1647    8B2C24                  mov ebp,dword ptr ss:[esp] ;ebp=堆栈 ss:[0012FF68]=00FE1007
00FE164A    81ED 4B294400           sub ebp,44294B             ;ebp=00B9E6BC
00FE1650    C3                      retn                       ;返回

00FE1007   /EB 44                   jmp short 00FE104D         ;返回这里,跳

00FE104D   /BB 44294400             mov ebx,442944             ;ebx=442944
00FE1052    03DD                    add ebx,ebp                ;EBX=00FE1007-44294B+442944=00FE1000,奸诈,竟然是移向00FE1000
00FE1054    2B9D 71294400           sub ebx,dword ptr ss:[ebp+442971] ;ebx=00FA0000
00FE105A    83BD D8304400 00        cmp dword ptr ss:[ebp+4430D8],0   ;ss:[00FE1794]=00000000
00FE1061    899D 2F2E4400           mov dword ptr ss:[ebp+442E2F],ebx ;ss:[00FE14EB]=ebx=00FA0000
00FE1067    0F85 3E050000           jnz 00FE15AB                      ;不等则跳
00FE106D    8D85 E0304400           lea eax,dword ptr ss:[ebp+4430E0] ;eax=地址=010F179C, (ASCII "kernel32.dll")
00FE1073    50                      push eax                          ;压入栈
00FE1074    FF95 EC314400           call dword ptr ss:[ebp+4431EC]    ;ss:[010F18A8]=7C80B529 (kernel32.GetModuleHandleA)返回kernel32.dll模块的句柄
00FE107A    8985 DC304400           mov dword ptr ss:[ebp+4430DC],eax ;ss:[010F1798]=EAX=78C00000
00FE1080    8BF8                    mov edi,eax                       ;EDI=EAX=78C0000
00FE1082    8D9D ED304400           lea ebx,dword ptr ss:[ebp+4430ED] ;ebx=地址=010F17A9, (ASCII "VirtualAlloc")
00FE1088    53                      push ebx
00FE1089    50                      push eax
00FE108A    FF95 E8314400           call dword ptr ss:[ebp+4431E8]
00FE1090    8985 79294400           mov dword ptr ss:[ebp+442979],eax
00FE1096    8D9D FA304400           lea ebx,dword ptr ss:[ebp+4430FA]
00FE109C    53                      push ebx
00FE109D    57                      push edi
00FE109E    FF95 E8314400           call dword ptr ss:[ebp+4431E8]
00FE10A4    8985 7D294400           mov dword ptr ss:[ebp+44297D],eax
00FE10AA    8B85 2F2E4400           mov eax,dword ptr ss:[ebp+442E2F]
00FE10B0    8985 D8304400           mov dword ptr ss:[ebp+4430D8],eax
00FE10B6    6A 04                   push 4
00FE10B8    68 00100000             push 1000
00FE10BD    68 46050000             push 546
00FE10C2    6A 00                   push 0
00FE10C4    FF95 79294400           call dword ptr ss:[ebp+442979]
00FE10CA    8985 75294400           mov dword ptr ss:[ebp+442975],eax
00FE10D0    8D9D 452A4400           lea ebx,dword ptr ss:[ebp+442A45]
00FE10D6    50                      push eax
00FE10D7    53                      push ebx
00FE10D8    E8 74050000             call 00FE1651
00FE10DD    8BC8                    mov ecx,eax
00FE10DF    8DBD 452A4400           lea edi,dword ptr ss:[ebp+442A45]
00FE10E5    8BB5 75294400           mov esi,dword ptr ss:[ebp+442975]
00FE10EB    F3:A4                   rep movs byte ptr es:[edi],byte ptr d>
00FE10ED    8B85 75294400           mov eax,dword ptr ss:[ebp+442975]
00FE10F3    68 00800000             push 8000
00FE10F8    6A 00                   push 0
00FE10FA    50                      push eax
00FE10FB    FF95 7D294400           call dword ptr ss:[ebp+44297D]
00FE1101    8D0E                    lea ecx,dword ptr ds:[esi]
00FE1103    8551 2C                 test dword ptr ds:[ecx+2C],edx
00FE1106    44                      inc esp
00FE1107    07                      pop es
00FE1108    50                      push eax
00FE1109    C3                      retn

 

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

抱歉!评论已关闭.