123456811 发表于 2024-3-5 09:21:52

热血江湖找CALL 的心得经验 [

首先用一个找命令行的小工具找到热血江湖的命令行,然后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,不要误会
了。

游戏的大定时循环函数应当会在游戏的靠后那几层当中。偶分析这些只是让我和偶一样的新手被这些层不层的东西弄混淆了,你只要懂的是这么回事就行了。其实找CALL只要bp s
end下断,分析传入参数就可以了。
调用的时候注意堆栈平衡,具体的偶也不太明白。只知道调用无参数call,先pushad ...call $地址 ...popad
第,找CALL的时候不要光看PUSH A; PUSH B;这样明显的参数还有注意mov ecx,a;这样的隐含参数。

页: [1]
查看完整版本: 热血江湖找CALL 的心得经验 [