Borland Delphi 6.0 - 7.0程序破解
去网吧上网,好不容易下载了半天的东西,可让我一不小心把电脑的电源给踢了,因为网吧的机子是装了还原的,重启之后就什么都没了,我气啊,今天不把你破了,我就不叫monster。首先看看是什么还原系统,可是查了半天也没查出来。无意之中打开了他的游戏目录,发现了一个叫RecoverSetup.exe的东西,打开一看,原来是迅闪还原3.0,如图1。
http://www.kejiait.com/uploads/allimg/090326/1F5262V8-0.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
要密码验证以后才可以进行管理,可是我不知道密码啊,上baidu查了一下,有很多人说可以直接用OD破的,可是我按照他们说的方法试了一下,更本就不成功,还是我自己来破解吧。
首先打开PEID来查看一下,如图2,是Borland Delphi 6.0 - 7.0写的,很好,没加壳,就不用我们去脱壳了。
http://www.kejiait.com/uploads/allimg/090326/1F52615P-1.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
我们来看一下他的错误提示,随便输入一个密码,弹出了一个窗口提示说“密码错误,登陆失败”,如图3。
http://www.kejiait.com/uploads/allimg/090326/1F5264138-2.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
打开OD加载进来,点击鼠标右键“Ultra String Reference”→“Find ASCII”来打开字符串查找功能,可是在打开的窗口中并没有找到我们需要找的字符串,如图4。
http://www.kejiait.com/uploads/allimg/090326/1F52622A-3.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
难道是它调用了一个外部的动态链接库?但事实证明不是这样,我又打开了winhex再次搜索了一下“密码错误,登陆失败”这个字符串,没想到居然找到了,如图5。
http://www.kejiait.com/uploads/allimg/090326/1F5261b6-4.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
我们记下这里的文件偏移,是0008F4C8,我们用偏移量转换器OC转换一下,得到了它的内存地址,是004900C8,如图6。
http://www.kejiait.com/uploads/allimg/090326/1F52A558-5.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
现在就好办了,打开OD把RecoverSetup.exe重新加载进来,加载了之后OD会自动把光标定位到程序的入口点,我们不需要在程序入口修改,只需要在我们刚才记下的地址修改就可以了。我们按下Ctrl+G后就会弹出一个对话框,在这里输入我们刚才得到的内存地址,就可以跳转到004900C8,如图7。
http://www.kejiait.com/uploads/allimg/090326/1F52C157-6.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
找到之后,我们都知道,这个位置是迅闪还原提示密码错误的地址,那么沿着这里的代码一直往上就会找到一个比较密码的语句,用鼠标拖着滚动条慢慢往上,慢点拖,拖快了就飞了,啥都看不见了。哈哈,终于找到了,就在这里,是0048FFED,如图8.
http://www.kejiait.com/uploads/allimg/090326/1F5263a6-7.jpgDelphi 6.0 - 7.0程序破解" style="border: 0px; list-style: none;">
看看附近的代码:
0048FFE2.8B83 64030000mov eax,dword ptr
0048FFE8.8B10mov edx,dword ptr
0048FFEA.FF52 50call dword ptr
0048FFED.84C0test al,al
0048FFEF.0F85 A3000000jnz Recovers.00490098
0048FFF5.A1 10484900 mov eax,edx,dword ptr
0048FFFA.8B00mov eax,dword ptr
这段代码是什么意思呢,test al,al是测试指令,和and差不多,但是test指令不对目的操作数进行赋值,只对标志寄存器Flags进行设置。他的作用就是比较用户输入的密码和原密码,下面的jnz是跳转语句,意思是当输入的密码和原密码不相等是跳转到00490098。我们在jnz Recovers.00490098这一句上按回车,然后出来个框,把里面的jnz直接改成jmp就可以了,然后别的不用改,点“汇编”按纽,然后点取消,就改好了。意思就是无论密码是否等于原密码不会提示“密码错误,登陆失败”。
改好之后就是保存了,在OD窗口里点右键,然后选择“复制到可执行文件
”→“所有修改”→“全部复制”,就会弹出来个窗口,在窗口里点击鼠标右键,选择“保存文件”选择迅闪还原的原目录把我们修改后的文件保存下来。
试着运行一下我们修改后的文件,可以看到运行后不需要我们输入密码就可以设置迅闪了,如图9,哈哈,破解成功了。
Borland Delphi笔者用过的反编译软件为DeDe
页:
[1]