按键小精灵生成文件的破解方法[资料]
按键小精灵生成文件的破解方法
首先,我们要把破解的文件
用peid查壳,PEBundle 2.0x - 2.4x-> Jeremy Collake [Overlay]
PEBundle是个捆绑壳,主要功能是把程序要用到的dll等文件绑到一个exe中。基本上没有什么保护功能。
Overlay是说程序文件后面有附加数据。
用OllyICE打开,hr 12ffc0。下这个断是典型的用ESP定律脱壳。
不停地按F9运行,等到出现一个长时间的间隔,说明PEBundle解完了。此时来到,
00466468 68 70394600 push 00463970 //这里
0046646D C3 retn
0046646E C8 000000 e nter 0, 0
这个push+retn实质是一个jmp命令,f8两下到这里,
00463970 . 60 pushad
00463971 . BE 00C04300 mov esi, 0043C000 00463976 . 8DBE 0050FCFF lea edi, dword ptr [esi+FFFC5000]
0046397C . 57 push edi
0046397D . 83CD FF or ebp,FFFFFFFF 00463980 . EB 10 jmp short 00463992 00463982 90 nop
00463983 90 nop
其实这个地方用OllyICE的SFX跟踪真正入口也可以跟到。
这个入口是典型的UPX壳,没关系,一样用ESP定律搞定。按F9
运行。
00463AD0 FF96 503E0600 call dword ptr [esi+63E50] //这个call
00463AD6 . 09C0 or eax, eax
00463AD8 . 74 07 je short 00463AE1 00463ADA . 8903 mov dword ptr [ebx], eax 00463ADC . 83C3 04 add ebx, 4
00463ADF .^ EB D8 jmp short 00463AB9 00463AE1 > FF96 543E0600 call dword ptr [esi+63E54]
00463AE7 > 61 popad
00463AE8 .- E9 F104FBFF jmp 00413FDE //断在这里
413fde就是OEP了,在这个jmp下断,然后清掉硬件断点。
这个JMP上方的代码是两个循环,作用是填写IAT,其中标记的call实质就是GetProcAddress。
只不过是程序自己实现的,没有调用kernel.dll的GetProcAddress。
也就是因为这个原因,它只是把自己的rva填入了IAT,这样用ImpRec处理就会出现无效函数。
解决方法就是把这个call直接改成call GetProcAddress。
然后ctrl+f2重新开始,F9运行到jmp处。,刚刚下过断点的,
f8一次,来到,
00413FDE 55 push ebp
00413FDF 8BEC mov ebp, esp 00413FE1 6A FF push -1
00413FE3 68 A0E94100 push 0041E9A0 00413FE8 68 4A3F4100 push 00413F4A ; jmp 到
msvcrt._except_handler3
很好,标准的VC入口。用LordPE dump 下来,然后用ImpRec修复。
接下来是把Overlay部分加入到dump中,最后修改Overlay的偏移量。
那个偏移量是在DOS Header中的。下面的就不用讲了,你懂得???
一.破解的等级
初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破
中级,追出软件的注册码
高级,写出注册机
二.用w32dasm破解的一般步骤:
1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册
2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误
提示信息,将错误提示信息记下来
3.侦测有无加壳(第一课).若加壳,脱壳(第二课)
4.pw32dasmgold反汇编
5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键
6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call
7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址)
8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存
壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact
脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump
实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成
第一列 行地址(虚拟地址)
第二列 机器码(最终修改时用ultraedit修改)
第三列 汇编指令
第一列 第二列 第三列
:0041BE38 2B45F0 sub eax, dword ptr [ebp-10]
:0041BE3B 6A42 push 00000042 :0041BE3D 50 push eax :0041BE3E FF75F4 push [ebp-0C] :0041BE41 FF75F0 push [ebp-10] :0041BE44 FF35A8AB4400 push dword ptr [0044ABA8]
两种不同情况的不同修改方法
1.修改为jmp
je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息
2.修改为nop
je(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转) nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。
好了,下面开始我们的破解之旅吧??????