游戏精英
 
- 贡献度
- 631
- 金元
- 17599
- 积分
- 4314
- 精华
- 3
- 注册时间
- 2008-1-21


|
本帖最后由 瘸腿大象 于 2017-3-1 22:28 编辑
首先我假设你有一定的ce脚本编写基础了。这篇可算是进阶篇。
这个游戏的物品地址很好找,2级指针而已。但直接改物品数量的话,魔法石不生效。
推测是没有调用刷新物品效果的代码。所以考虑使用游戏自己的添加物品call。
在商店买东西,搜索改变物品数量的代码,结果如下。
1 1413F2232 - 8B 0C 88 - mov ecx,[rax+rcx*4]
1 1413F2235 - 44 89 04 30 - mov [rax+rsi],r8d item+
1 1413F2250 - 83 3C 06 00 - cmp dword ptr [rsi+rax],00
1 1413F2266 - 83 3C 06 00 - cmp dword ptr [rsi+rax],00
返回2次后来到这里
14161302D - 41 B0 01 - mov r8l,01
141613030 - 48 89 C1 - mov rcx,rax rcx=物品ID
141613033 - 89 DA - mov edx,ebx rdx=增加后的数量
141613035 - E8 36B7DDFF - call 1413EE770 item+2 这个就是增加物品call
接下来就是怎么写脚本。
注意这些就好
1 x64没有pushad popad命令,所以要写一堆push pop来还原寄存器数据。
2 x64调用call之前,要sub esp,20 ,call调用之后要add esp,20。这是x64系统规定的。
3 x64程序做jmp跳转,最好是在同一个模块里,不要globalalloc申请内存。这样的jmp才是5个字节,否则就算远跳,要破坏20个字节。
4 很多时候用createthread来创建线程会出错,所以最好在游戏里找到一个会被高频率执行的代码做跳转。
脚本示例,添加显示宝箱的魔法石
<
祝修改愉快。
|
评分
-
2
查看全部评分
-
|