- 注册时间
- 2010-7-31
- 最后登录
- 2010-7-31
- 在线时间
- 0 小时
编程入门
- 魔鬼币
- 4
|
首先用一个找命令行的小工具找到热血江湖的命令行,然后OD打开热血江湖。
第 ,bp WSASend下断。这个断点是客户端向服务器发送封包的时候断下来,所以单机游戏可能会不管用。
单机游戏不用管它,我们用它来对热血江湖下断。比如:对死亡回城,找回城CALL。先建个小号弄死他
,然后bp send下断。要先等游戏自断一次。然后再f9让游戏恢复运行,点
第,找CALL是为了什么,当然是调用它,让它自己做动作。比如自动吃药,打怪等等。游戏开发者编写游戏,
当然是不能用汇编语言来写了。但偶们为什么用OD来调试,这样调试的汇编语言和用高级语言编写的游戏能一致吗?
当然一致,要不偶们用OD来找CALL不就米意义了。偶的理解是:游戏运行的时候,它先翻译成汇编语言去执行的,所以偶们
用OD调试找的CALL和高级语言编写的游戏运行是一致的。偶们写调用CALL的时候也不能用汇编去编写,太难了。
偶们先用delphi编写,申请一块内存,然后嵌入汇编来调用CALL。ccb讲的注入的例子,也是这个原理,找一块空的内存,然后
嵌入汇编。只不过申请内存,运行,调用CALL全部用API和delphi去做了。偶想就是这么着的。
第,找CALL的那几篇文章中都说了,,,层是系统层,,,,是用户层之类的东西。一开始看欧也挺晕的,现在也晕。
偶是这样看的:不用管它分几层,在OD里它都是个大程序吧。它都是由push ebp ; mov ebp,esp ; sub esp,xxx... ...
mov esp,ebp ; pop ebp; ret ;一个一个子程序构成的吧。实际上这个层也就是这个大程序。我们只需要记住前层是系统层不用考虑就可以了
你就ctrl+f9 3次就可到第层,好了从这一层开始分析。为什么是这样的呢?偶是这样理解的:假设有a,b,c 3个子程序,也就是CALL。a在b中,b在c中。又假设
a在第层,b在第层,c在第层。你已经次 ctrl+f9到了第层了,假设。那么你再ctrl+f9执行到ret是不是可以到达第层,b程序中呢?
再ctrl+f9执行到ret是不是可以到达第层,c程序中呢?每ctrl+f9就会执行ret返回,再ctrl+f9就会执行到下一次ret返回。并不是说ctrl+f9一次就能够到达程序的出口处ret,不要误会
了。 |
|