【文章标题】: 刚学破解,练习一下。(希望给个注册码鼓励下。嘿嘿)
【文章作者】: 怪兽
【作者邮箱】: klajj520@126.com
【软件名称】: 中华压缩
【软件大小】: -
【下载地址】: 自己搜索下载
【加壳方式】: ASPack
【使用工具】: OD,PEID,和部分插件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
大家好,本人是超级菜鸟一只,正在看雪里面努力学习破解中.........
看了几天的黑鹰破解教程,稍微对破解有一点点了解了,就来小试牛刀下,找了个容易的软件破解试试。
下面我就来说下我破解的过程。当然我可能会有失误之处,希望大家帮我指出,我会认真听取并学习的。
过程:
1.先用PEID查看下程序加的壳。(是ASPack的壳,破解软件时要先对软件脱壳)
2.用OD载入,脱壳过程如下:
载入后代码:
007CF001 > 60 pushad
007CF002 E8 72050000 call ChinaZip.007CF579
007CF007 EB 4C jmp short ChinaZip.007CF055
007CF009 0000 add byte ptr ds:[eax],al
007CF00B 0000 add byte ptr ds:[eax],al
007CF00D 0000 add byte ptr ds:[eax],al
007CF00F 0000 add byte ptr ds:[eax],al
007CF011 0000 add byte ptr ds:[eax],al
007CF013 0000 add byte ptr ds:[eax],al
007CF015 87DB xchg ebx,ebx
007CF017 90 nop
007CF018 00D0 add al,dl
007CF01A 58 pop eax
007CF01B 0010 add byte ptr ds:[eax],dl
007CF01D D058 00 rcr byte ptr ds:[eax],1
当然,我一看到这个pushad我就想到要用一步直达发,找出相对应的popad,但是找出了很多,自己能力有限,
就放弃了这种方法......我就介绍下用ESP定律脱壳吧。
ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)
2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!
3.选中下断的地址,断点--->硬件访--->WORD断点。
4.按一下F9运行程序,直接来到了跳转处。(记得随手删除硬件断点,视屏中是这样说的。囧)
然后我们就来到了这个popad这里:
007CF4F3 61 popad
007CF4F4 ↓ 75 08 jnz short ChinaZip.007CF4FE (在这个007CF4F4处有个跳转,就用↓表示下。)
007CF4F6 B8 01000000 mov eax,1
007CF4FB C2 0C00 retn 0C
007CF4FE 68 3C655100 push ChinaZip.0051653C
007CF503 C3 retn
007CF504 8B85 E4374400 mov eax,dword ptr ss:[ebp+4437E4]
007CF50A 8D8D 1D384400 lea ecx,dword ptr ss:[ebp+44381D]
007CF510 51 push ecx
007CF511 50 push eax
F8单步向下,到007CF4F4跳转到007CF4FE。
007CF4FE 68 3C655100 push ChinaZip.0051653C
007CF503 C3 retn
这两句就是个很大的跳转,根据教程中介绍,可能就是OEP。
然后F8单步向下,就跳转到
0051653C 55 push ebp
0051653D 8BEC mov ebp,esp
0051653F B9 0A000000 mov ecx,0A
00516544 6A 00 push 0
00516546 6A 00 push 0
00516548 49 dec ecx
00516549 ^ 75 F9 jnz short ChinaZip.00516544
0051654B 53 push ebx
到达OEP。用插件脱壳。
3.运行脱壳后的文件,看看注册提示。(随便打字上去看错误提示)
提示为:注册码不正确,无法注册,请您重新检查输入您的注册码! (记住这个以便后面查找)
4.再用OD载入脱壳后的文件,
插件----UItra 字符串参考----查找 ASCII
找出“注册码不正确,无法注册,请您重新检查输入您的注册码”双击。
发现在“注册码不正确,无法注册,请您重新检查输入您的注册码”代码的上面有个关键条,看箭头可以看出它直接跳到了“软件注册成功,谢谢您的支持!”
但是这个跳转时没有实现的,让它实现就可以跳转了。
把jnz改为jz(应为他们是相反的),也可以改为JMP(JMP是无条件跳转)。(双击修改)
然后复制到可执行文件,保存起来就可以了。
自己试用了下,点击输入注册码,随便打几个字上面就会提示注册成功。我只能这样讲解了,因为我也只是只菜鸟。努力学习中。
附教程的链接
http://bbs.pediy.com/showthread.php?t=106482 非常不错的教程。就是有点大。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2010年04月06日 16:04:43
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)