以下Torrial测试程序为32位
01.步骤1
打开CE 选项Torrial进程
02.步骤2:精确值扫描
1:在CE程序的数值中输入100,点击首次扫描
2:再次点击测试程序中的打我按钮,观察健康值的变化
此时的健康值为96,在CE数值栏中输入96,点击再次扫描
地址栏中出现的便是血量内存地址,选中右击,将选中的地址添加到选中列表
点击数值 修该为1000
在测试程序中点击下一步
03.步骤三:未知的初始值
1: 在扫描类中选择位置的初始值,点击首次扫描
下图为扫描结果 虽然地址栏没有数据,但是扫描结果已经出来了
2 在测试程序中点击打我,在CE 扫描类型中选择减少的数值,然后点击再次扫描。
3 在测试程序中点击打我,在CE 扫描类型中选择减少的数值,然后点击再次扫描. (重复第二步)
知道定位到血量内存地址(重复3-5次基本就可以出哪个是血量内存地址)
4 将血量修改为5000,点击下一步
04.步骤4:浮点数
1先查找健康值。在CE数值栏中写100,数值类型选择单浮点,点击新的扫描
2.在测试程序中点击打我按钮,可以在CE中观察到变化的数值
如果结果数再多,可以在扫描类型中选择减少的数值,点击再次扫描。
3 将选中的地址添加到地址列表,并修改健康值5000.
4 弹药值-寻找弹药值同以上方法一样(数值类型 选择 双浮点)
05.步骤五:代码查找
1,找出血量内存地址值,并加入下方地址列表中
2,选中右击,选择找出是什么改写了这个地址。弹出一个空白的窗口
3,在测试程序中点击改变数值按钮,空白的窗口会出现一行代码
4,选中代码,点击旁边栏替换按钮,弹出对话框点击确定。。
5,关掉窗口,在测试程序中点击 改变数值,点击下一步按钮
06.步骤六:一级指针
1 寻找到数值的内存地址并加入地址列表中
2 选中内存地址,右击,点击找出是什么改写了这个地址,会弹出一个空白框
3 在测试程序点击改变数值按钮。此时原先空白窗口会显示一行代码
4 选中该行代码 ,点击详细信息按钮,会弹出一个对话框
5 记录这个值
6 在主界面中数值栏写入内存地址,(Hex 必须要勾选),点击 新的扫描(一般需要点击两次)
如果出现很多不用管,只需要绿色(xxx.exe+数值)一行
7 加入到地址栏中,剪切地址,将十六进制勾选去掉,勾选指针
如下图所示
8 修改地址栏中的数值为5000,并激活
9 在测试程序中 点击改变指针按钮,倒计时结束点击下一步按钮
07.步骤七:代码注入
1: 找到血量的内存地址 并加入 地址栏中
2: 选中地址, 右击,点击找出是什么改写了这个地址,会弹出一个空白框
3,在测试程序中再次点击打我按钮,空白框会出现一行代码
4,选中代码,点击右边栏中显示反汇编程序按钮
5 在状态栏中选中 工具->自动汇编,会出现下图
6 在状态栏中选择 模板->AOB注入 如下图所示
7 在状态栏中选择 文件->分配到当前CT表 , 看在地址栏中看见自动汇编脚本
8 关闭所有对话框,点击脚本,注入代码,将sub 改成 add, 01改成02,点击确定
9 激活脚本,回到测试程序,点击打我按钮,点击下一步按钮
08.步骤八: 多级指针
1 找到数值的内存地址,并加入地址栏中
2 选择内存地址,右击,选择对这个地址进行指针扫描,会出现下图
2 点击确定按钮,选择保存的文件名称与路径,会出现指针扫描器,如下图
3 关闭测试程序(只关闭测试程序,CE 不要关闭,CE的对话框也不要关闭)
4 重新打开测试程序,并跳到步骤八,并记录改变的数值
5 CE 重新加载测试程序进程
6 在指针扫描器对话框中 选择 指针扫描器->重新扫描内存-移除没有指向正确地址的指针。
出现“重新扫描指针列表”选项对话框,选择要查找的数值,并将记录的数值写入,点击确定按钮
7 重复3-6 方法 直到可以明显观察出正确 基值和偏移地址的并添加到CT表中
8 在CT表中修改数值为5000并激活,点击改变指针按钮,倒计时结束,点击下一步按钮
09.步骤九:注入c++
1 先找到任意其中一位玩家血量内存地址,并加入地址(CT)表中
2 选中,右击,选择找出是什么改写了这个地址,此时会弹出对话框
3 回到测试程序再次点击攻击按钮(之前选择的那位玩家),会出现下图
4 选中该行代码,右击,选择找出代码访问的地址,如下图
5 回到测试程序,依次攻击四个玩家,此时对话框如下图所示
6 将其全部选中,右击,选择打开地址的分析数据,会出现一个新的对话框,选中新建窗口,点击确定按钮
7 出现结构定义对话框,点击OK按钮
8 又出现新的对话框点击YES按钮
9 又出现新的对话框,点击OK按钮
10 在结构分析的对话框中,对比数据,红色表示不同数据,
观察数据可知 [ebx+4]是血量 [ebx+10]是阵营 [ebx+15] 是玩家名称
只要对比[ebx+10]是否等于1,就可以区分不同阵营
11 回到汇编指令窗口,选中代码 点击显示反汇编程序按钮
12 在Memory Viewer 对话框 点击 工具 ->自动汇编
13 在自动汇编窗口 点击 模板 -> AOB注入
14 在自动汇编窗口 点击 文件 -> 分配到当前的CT表中,
15 关闭所有的对话框,回到主界面,在CT表 点击脚本,编写脚本,点击确定按钮,并激活脚本
aobscanmodule(INJECT,Tutorial-i386.exe,89 43 04 D9 EE) // should be unique
alloc(newmem,$1000)
label(code)
label(hp) // 自定义标签
label(return)
newmem:
cmp [ebx+10],1 // 判断是否我放阵营
je hp // 条件成立 跳转hp标签
jne code // 条件不成立 跳转code
code:
// mov [ebx+04],eax
mov [ebx+04],0 // 将敌方血量赋0,实现秒杀
fldz
jmp return
hp: // 什么都不做
fldz
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 89 43 04 D9 EE
unregistersymbol(INJECT)
dealloc(newmem)
16 回到测试程序点击重新启动并自动执行按钮,点击下一步按钮。