小弟最近的破解经验
本帖最后由 swterry2005 于 2009-6-2 22:32 编辑小弟学破解的时间并不长,受沉默的羔羊大大的《羔羊带你走出迷茫,0蛋也能学破解!》的启蒙,才加入学习破解这一大队列。这次开贴,只是回顾自己学习到得东西,并综合利用一下。也让自己在以后的时间,能不断进步。废话不说,开始破解。
这次选用的是一款小游戏----《潜艇大战【北斗版】》。用peid查壳,可知是ASPack 2.12 -> Alexey Solodovnikov。用ollydbg打开,可看到http://p3.images22.51img1.com/6000/swterry2005/34d075c809b8b3034a7598a6dad5b3ed.jpg点”确定”
http://p5.images22.51img1.com/6000/swterry2005/5aaf444a8dd69594a2d0ac7cc0d2a091.jpg点“否”。
我们就来到入口。
http://p9.images22.51img1.com/6000/swterry2005/98d9dbe5b5ae481bf9e71adf8c9d1d3b.jpg
根据图片指示,我们一步步推进。
http://p4.images22.51img1.com/6000/swterry2005/4572b445a369a6cfaf74debc8fca1736.jpg
http://p3.images22.51img1.com/6000/swterry2005/35c3b0e0fcd8d10afde4c7372cc3b5a6.jpg
http://p3.images22.51img1.com/6000/swterry2005/3cbf289baa0b25aea582bb746187e9a2.jpg
http://pf.images22.51img1.com/6000/swterry2005/f62d292d91bc5ac828a4587187f2231b.jpg
http://p9.images22.51img1.com/6000/swterry2005/937020cdcd1d6623aefd2f206c0fcea4.jpg
http://p2.images22.51img1.com/6000/swterry2005/2f72a2b71cf5ee8160864b90400cd8ee.jpg
http://pf.images22.51img1.com/6000/swterry2005/f6ff47b8696c04c3cef629ee7b56a68e.jpg
来到这里,我们已经到达oep了。
http://p4.images22.51img1.com/6000/swterry2005/4c239b1e4ccd48e3eb77e991a5b40079.jpg
接下来就是把壳脱了。按照图片的顺序一步步来。
http://p6.images22.51img1.com/6000/swterry2005/68224d5c1fe7b3536b19556ec3479417.jpg
http://p4.images22.51img1.com/6000/swterry2005/4f98e38e632779d1341550ff442cc463.jpg
http://pe.images22.51img1.com/6000/swterry2005/e55df5b65c279d27b48728e68e891e90.jpg
到这里,选择一个任意名字,就行了。再用ollydbg载入我们刚刚脱掉的壳的文件。可以看到,已经没有再询问我们任何东西了,而且直接到达oep,说明脱壳成功。用peid查壳,可以看到,已经变为
Borland Delphi 4.0 - 5.0
http://pe.images22.51img1.com/6000/swterry2005/e56cca8416866e52caaba5954ceaee2d.jpg
******************************我是华丽的分割线*********************************************
后面就是本人的兴趣了-----修改游戏。在游戏中,有一种道具是吃了会进入无敌时间。我现在修改成,吃任何道具都变无敌。接上面的图,在ollydbg中,我们查找无敌这一字符串。
http://pd.images22.51img1.com/6000/swterry2005/d97f04725b76e6da3beb47530da8cb0f.jpg
http://p2.images22.51img1.com/6000/swterry2005/28e9e2ff4580974bcc47528da484b89d.jpg
可以看到,找到了无敌这一字符串,双击它
http://p6.images22.51img1.com/6000/swterry2005/61d16e5ed65e6f2dd9830012a8898400.jpg
我们来到无敌的代码段。
http://p4.images22.51img1.com/6000/swterry2005/4efc433446ace4260787d2b522886a73.jpg
我们往上看,可以看到,这是一个switch语句,可见,一定是有一个跳转到这里。在这里,就是004946D5.我们点击004946D5这一地址,可以看到,有一个红色箭头,源头就是跳转代码了。
http://pa.images22.51img1.com/6000/swterry2005/ab6637135d104f7e8cf8e1101b99dbd9.jpg
那段代码是根据你吃到的道具,选择获得的能力。我们可以用一个跳转,让它实现无敌。我们把004647C0的代码,改为JMP 004649D5
http://p7.images22.51img1.com/6000/swterry2005/7c71998ec59937fe96182749816ba2ba.jpg
修改后,我们保存一下
http://p6.images22.51img1.com/6000/swterry2005/6028ae8151e9fdd30c610551490ecfd6.jpg
选择全部修改
http://p7.images22.51img1.com/6000/swterry2005/78ad972eec429ec83dc3345680605f30.jpg
任意一个文件名。保存后,运行文件。可以知道,我们吃任何道具,都会进入无敌状态。至此修改成功。
当然,你吃不到道具,被炸弹炸到了,还是会死,我们不如弄个不死版的。
还是之前那个脱壳后的文件,导入后,运行游戏后,用修改器找到保存生命数的内存的位置。我这里是00B14008。回到ollydbg,按住ctrl+G。输入00B14008。
http://pe.images22.51img1.com/6000/swterry2005/ee9fa7fec7b1db8e16d4fb9b3014e234.jpg
我们来到这里
http://p4.images22.51img1.com/6000/swterry2005/42ea832d4ef3c2e35ad85b7c389c073b.jpg
http://p8.images22.51img1.com/6000/swterry2005/87f42c35768b49b8625496e0d3752764.jpg
下好断点后,继续游戏,设法减少性命。这时会中断,来到下面这里
http://pc.images22.51img1.com/6000/swterry2005/c16629c5fa19d46a739caf0b5e0942d1.jpg
哈哈,这里就是中弹后,减命的代码。我们把它改成遇弹后跳转到无敌状态。
http://p5.images22.51img1.com/6000/swterry2005/5a67c4d783bf58ea8ccf9099936f5754.jpg
保存后,运行游戏。哈哈,无论如何,我们的不死啦。
好累啊!打了那么多字。这是我这段时间的收获,或许简单,但对我来说,是激励着我的动力。
PS:哪位大大能够帮我找一下,那个计算无敌时间的代码,我找不到!!!:L
附上游戏! 是羔羊菜菜。。不是大大。。
大大基本不做这么基础的教程。。努力啊同鞋,我看好你。 慢慢钻研吧只要下功夫会出现第二个小生 顶高手呀~~~学习了。不过ASPACK用ESP定律快速到OEP 没想到刚发帖,羔羊大大就来了,谢谢你的评价,也感谢斑竹的鼓励,我会努力的! 嗯...看着也挺基础的.!
好多教程都是从基础来的. 支持............. 路过 本地的简单一点 远程验证的不好搞 支持精品文章 :handshake 我也要加油 一起努力 顺便 感谢 羔羊大大 这样的大鸟 为照顾我们菜菜出的基础贴