吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 38711|回复: 40
收起左侧

[调试逆向] CE教程之AOB注入之修改电竞传奇

  [复制链接]
qingyf 发表于 2019-3-30 01:27
本帖最后由 qingyf 于 2019-3-30 01:30 编辑

之前录过一个视频我们使用了CE代码注入的功能修改鬼泣5实现各种功能
地址https://www.52pojie.cn/thread-910487-1-1.html 有兴趣的可以看看

这里贴上之前CE自动汇编无敌的代码
[Lua] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[ENABLE]
alloc(newmem,2048,"DevilMayCry5.exe"+116B0C4)
label(returnhere)
label(originalcode)
label(exit)
 
newmem:
 
originalcode:
mov [rdi+10],(float)7000.0
 
exit:
jmp returnhere
 
"DevilMayCry5.exe"+116B0C4:
jmp newmem
returnhere:
 
[DISABLE]
dealloc(newmem)
"DevilMayCry5.exe"+116B0C4:
movss [rdi+10],xmm1
//Alt: db F3 0F 11 4F 10


细心的朋友就发现了
我们注入的地址是"DevilMayCry5.exe"+116B0C4:
这种模块名加地址的格式注入就非常的简单
而且重启游戏后,代码仍然有效

但是 如果我们要注入的地址是动态地址怎么办呢?
比如今天我们要动手的游戏 WEgame版电竞传奇地址格式是2437E8ED - 89 48 10    - mov [eax+10],ecx

这种动态地址注入的话重启游戏后是绝对无效的
甚至可能会导致游戏闪退的各种错误
那么我们应该怎么办呢
没错 就是我们今天要说的AOB注入

所谓AOB注入原理就是通过特征码找到匹配的地址
然后对匹配到的地址进行注入修改操作
反正我们大概知道就是这么个意思就行了

好的教程开始
首先定个小目标
我们今天要实现的是修改每次获得的游戏资源数量 至少得翻个10倍对吧
通过简单的4字节搜索找到钱钱的地址
2.png
然后右键什么改写了什么地方
然后我们在游戏中花点钱钱在赚点钱钱后看看结果
3.png
代码的意思是把ECX的值放在 [eax+10]里面
[eax+10]也就是 1F401A68+10=1F401A78这就是我们的钱钱的地址
我们可以发现不管赚钱还是败家 都是同一个地址代码在操控着我们的钱钱
我们点击上图的反汇编程序进去瞧一瞧
4.png
看见了吗 地址是2496B4AD  不是上一篇鬼泣五月哭视频里的模块加地址这种格式"DevilMayCry5.exe"+116B0C4:
那么按照上篇讲的可以改吗
当然是可以的 但是重启后就改不了了
不相信的小伙伴可以改改试试
为了节约大家时间我就不试了

好 继续 找到这个管钱的地址后作为一个好习惯我们应该看看它除了管钱还管不管其他什么
右键地址选择指令访问的地址
5.png
康康我们发现了啥
6.png

它不但管钱还管吃喝拉撒!你说巧不巧
既然如此那就盘它
直接工具-自动汇编走起
7.png
然后加入框架代码点击AOB注入
1.gif
此时会弹出两个框 萌新直接确认就行
我实在懒得截图了
CE会自动加入如下代码
[Lua] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[ENABLE]
 
aobscan(INJECT,89 48 10 EB 37) // should be unique
alloc(newmem,$1000)
 
label(code)
label(return)
 
newmem:
 
code:
  mov [eax+10],ecx
  jmp 2496B4E9
  jmp return
 
INJECT:
  jmp newmem
return:
registersymbol(INJECT)
 
[DISABLE]
INJECT:
  db 89 48 10 EB 37
 
unregistersymbol(INJECT)
dealloc(newmem)


值得一提的是 ce自作聪明的生成了一行jmp 2496B4E9代码,这行我们要手动删除
因为这个2496B4E9地址是动态的 我们每次启动游戏都不一样
直接删掉即可

代码中的89 48 10 EB 37就是特征码
我们可以测试下在CE中搜索这个特征码
2.gif
看到了吗 搜索到的地址和我们之前的管家婆地址一模一样啊
接下来就简单了修改代码走起
由于我打算每次金钱改动都加10000,其他小星星啥的改动的时候加1000
所以要处理下共用代码的问题
这个上篇文章讲过
这里不多说了

下面是改过后的代码
[Lua] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[ENABLE]
 
aobscan(INJECT,89 48 10 EB 37)
alloc(newmem,$1000)
 
label(code)
label(return)
label(qingyf)
 
newmem:
  cmp [eax+8],3
  je qingyf
qingyf:
  add [eax+10],#10000
 
code:
  add [eax+10],#1000
  jmp return
 
INJECT:
  jmp newmem
return:
registersymbol(INJECT)
 
[DISABLE]
INJECT:
  db 89 48 10 EB 37
 
unregistersymbol(INJECT)
dealloc(newmem)


然后我们测试下看看
3.gif

ok可行  好的啰嗦一大堆到此结束
觉得有用的同学加个分呗

免费评分

参与人数 7威望 +2 吾爱币 +18 热心值 +7 收起 理由
233500 + 1 + 1 倒数第三个图挂了
longcy + 1 前面看懂了,后面代码没看懂!
willJ + 2 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
netle8 + 1 + 1 谢谢@Thanks!
fghqa3v + 1 + 1 我很赞同!
丨丶钟情 + 1 我很赞同!
beijiyu292 + 3 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

公孙秒秒 发表于 2019-3-30 03:00
哈哈哈这个特征码好像就是机器码,翻译成汇编就是上面的mov [eax+10],ecx
short jmp 37意思,EB代表的短跳转只能在以eip为基准的256个个字节内跳转,后面的一个字节为跳转的距离,而跳转的方向通过补码计算,转为二进制过后,从左到右第一位为符号位,后七位为数值位
 楼主| qingyf 发表于 2019-4-1 13:46
wangyujie96 发表于 2019-4-1 10:58
嘿嘿,我在3dm上已经发过这个游戏的修改器了。你点主界面上面菜单栏的Mono看看,Launch之后内存浏览器里面 ...

大神你好啊哈哈哈
陈世界 发表于 2019-3-30 02:29
学会爱自己 发表于 2019-3-30 02:32
感谢分享,学习一波
小夫哥 发表于 2019-3-30 06:37
不错,挺有用的。。。。。
15136766618 发表于 2019-3-30 06:40
先收藏,以后再看⊙▽⊙
笑浪 发表于 2019-3-30 08:00
厉害了 我的哥
福气啦 发表于 2019-3-30 08:18
学习了,感谢大神分享
w122qccwac 发表于 2019-3-30 08:42
感谢分享      
haoxiangzuo 发表于 2019-3-30 08:44
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-9 07:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表