找了一天,看了N多教程,反复了多少次已经记不清了,最后2010.5.9日下午13:45终于找到了。晕了的头脑又清醒了~~~~~~~
下面把这过程写下来,希望你不要像我一样这么辛苦~~~
打开"游戏找CALL练习实例one.exe",打开OD,附加"游戏找CALL练习实例one"进程。
以下几步是边学边用的:
F9运行。
输入bp send,回车,这样发包函数被设成中断。
点“吃血”,OD在发包处中断。
游戏中一个具体的功能都会设成一个具体的过程或函数,在游戏主程序运行时,相应功能的实现都会有一个Call,找Call就是为了找功能入口。
OD中按Ctrl+F9,是返回(retn)。返回到哪里?看下图中画圈处。找游戏Call就要在游戏模块中。不在就Ctrl+F9...
按Ctrl+F9,按会找到一个retn,往上看看会有个Call。
看教程说按到第五层。找到的是加血的。照做。看下图。
怎么知道是不是加血call?
这里设上断点,然后光标移到别处。按运行...按吃血,吃蓝。。挨下试,看那个能中断到这里,(先把原来的中断去掉,如下图,红色总分点右键删除。)只有加血能到这里,这个CALL就是加血的。
要进一步确认,就可以注入代码测试。下图红框中的代码,注入发现不成功,这里反复了好几次。。。。
我把右边的寄存器的值也写上了一些再试....注入远程代码。。。OK成功了!!
成功了的心情,无法言表。压抑越久,喜悦越大,但这还是因为自己的水平太**
如果你也像我一样,反复做不成,但愿这篇文章给你启发,那怕就一点。
学习永无止境,有兴趣请加QQ:251124779