首页 > 编程语言 > AAuto > 简单网络游戏远程call分析及调用
2012
04-25

简单网络游戏远程call分析及调用

看到论坛有个远程call学习程序,遂下来做下分析。

1、运行程序,OD附加。

1

 

2、命令行输入“bp send”下wsock socket断点,点击学习程序的“物品”按钮,断了下来

2

3、ctrl+f9回溯,即跳出函数到上一层代码中

3

从call的地址可以看出此时代码仍在系统函数中,再按一次ctrl+f9。

4、仍在系统函数中,继续ctrl+f9.4

5、这一步找到2个位于程序中的比较可疑的地址。

5

6、分别下断,并在断点列表中把bp send断点删除掉

6

再次点击“物品”按钮,发现2个断点都成功断了下来。来分别测试下。

7、第一处call,测试成功。第二处测试失败。至此已经找到了物品的call。

 

7

 

 

8、下面找经验call,步骤同上。找到了疑似经验call的地址。发现有寄存器的值入栈了,说明这个获取经验的函数是有参数的。

 

9

9、下断,并点击“经验”按钮,成功断下来。od寄存器窗口中显示eax的值为0x0012F478。这个值就是经验函数的参数了。

10

10、用“代码注入器”测试一下。汇编代码为:

mov eax,0012F478

push eax

call 004020C0

 

测试成功。

11

11、AAuto代码实现。

import win.ui;
import process
/*DSG{{*/
var winform = ..win.form( bottom=108;parent=…;right=192;text=”AAuto Form” )
winform.add(
button={ bottom=73;text=”得到物品”;left=10;top=38;z=1;right=75;cls=”button” };
button2={ bottom=71;text=”得到经验”;left=91;top=40;z=2;right=152;cls=”button” }
)
/*}}*/
winform.button.oncommand = function(id,event){
var procs = process.find(“网络游戏.exe”)
var getGoods = procs.remoteApi(“void()”,0x00401F20)
getGoods();
}
winform.button2.oncommand = function(id,event){
var procs = process.find(“网络游戏.exe”)
var getExperience = procs.remoteApi(“void(int n)”,0x004020C0)
getExperience(0x0012F478)
}
winform.show()
win.loopMessage();

 

测试成功

image

“网络游戏”下载地址:网络游戏

最后编辑:
作者:NINE
这个作者貌似有点懒,什么都没有留下。

简单网络游戏远程call分析及调用》有 2 条评论

  1. Neeke 说:

    汇编很牛叉啊!求培训!

留下一个回复

你的email不会被公开。