【逆向】使用CE查找Android中变量的偏移

0x00 准备工作下载Cheat Engine以及调试器服务端:https://www.cheatengine.org/index.php
夜神模拟器:
https://www.yeshen.com/
下载安装贪婪洞窟(梦境模式):
http://a.4399.cn/game-id-94656.html
0x01 CE远程挂接模拟器
将CE工具的服务器文件传入模拟器中:
adbpush C:\Users\Darkbright\Desktop\ceserver_x86 /data/local/tmp
进入模拟器shell:
adbshell
然后执行:
#cd /data/local/tmp/
#chmod 777 ceserver_x86
#./ceserver_x86
Windows端另起一个终端,进行端口转发:
adbforward tcp:52736 tcp:52736
打开CE工具,连接模拟器(注意选择Network):
在这里插入图片描述
在这里插入图片描述
0x02 查找游戏数据
打开游戏,使用CE搜索最小攻击力的值:

04-03
### 使用OD和CE分析程序内存中的变量逆向工程领域,OllyDbg (OD) 和 Cheat Engine (CE) 是常用的工具组合。通过 CE 找到游戏或其他应用程序中特定变量的存储位置后,可以进一步利用 OD 来跟踪这些变量的具体操作逻辑。 当使用 CE 查找到某个变量(例如“金创药”的存储地址),可以通过观察其变化规律来推测该变量的作用以及它与其他部分的关系[^1]。一旦定位到目标地址,在调试过程中将其映射至 OD 中对应的指令流是非常重要的一步。通常会发现一些类似于 `mov` 的汇编语句,它们负责加载或修改寄存器中的值。 具体来说,如果我们在 OD 中看到如下代码片段: ```assembly 006A3B32 |> /33D2 xor edx,edx 006A3B34 |> |8B43 0C mov eax,dword ptr ds:[ebx+0xC] 006A3B37 |. |B9 07000000 mov ecx,0x7 006A3B3C |. |8D7C24 14 lea edi,dword ptr ss:[esp+0x14] 006A3B40 |. |8D70 08 lea esi,dword ptr ds:[eax+0x8] 006A3B43 |. |F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi] 006A3B45 |. |8B08 mov ecx,dword ptr ds:[eax] ``` 这里的关键在于理解每条命令的功能及其上下文关系。例如,第一条指令 `xor edx,edx` 将 EDX 寄存器清零;而第二条指令则将 EBX 加偏移量后的内存单元内容赋给 EAX。这表明 EBX 很可能指向某种结构体或者对象实例,其中包含了我们需要关注的数据字段[^2]。 接着往下看,“rep movs”是一组重复字符串传输的操作符,用于高效复制大量数据块。“lea”表示有效地址计算,意味着源地址被重新定义以便后续处理。最后再次读取 DS:EAX 处的内容并放入 ECX 寄存器里完成整个过程的一部分工作流程展示。 因此,要解决上述提到的情况——即如何确定 ebx 的确切含义及作用范围,则需回溯更早之前的调用链路直至源头出处为止。这样做的目的是为了弄清楚当前所使用的这个基址究竟是由哪个函数产生的结果还是其他机制决定下来的固定数值等等情况下的表现形式差异所在之处加以区分对待即可达成目的。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值