总有同学会问,PC端的逆向调试工具有CE,OD,XDBG,IDA等等,那在移动端是否有工具可以调试安卓模拟器或者是手机呢?
答案是肯定的,我先拿扫描安卓模拟器中的APP数据来举例
常用扫描模拟器数据的方式有三种.
第一种扫描方式——GG修改器
最通用的方式是通过GameGuardian(GG修改器)等修改器模拟器来进行扫描,这种工具是以APK的形式安装在手机内部的,所以他可以直接对APP进行附加并进行扫描。
但是这种方式的缺点是速度比较慢,功能少,简单点说就是发展的还不够完善。
比如我们用GG修改器来对安卓版的一款小游戏进行扫描。
打开雷电模拟器,然后再模拟器中打开GG和植物大战僵尸安卓版。
附加进程
然后对游戏内的阳关值进行扫描
我们点击右下角的新搜索后,发现扫描的速度非常的慢,当然这是相对于PC端的CE扫描。
刚开始扫描过程看似很快,其实扫描完需要近一分钟的时间,然后我们还可以对其结果进行过滤,只需要对结果进行改善即可。
最终可以得到一个地址,而这个地址就是游戏在模拟器中的真实地址
那我们用CE直接附加模拟器能不能扫描到这个地址呢?或者能不能扫描到真
正的阳光值呢?我们来尝试下!
直接用CE附加模拟器,并对当前的阳光值进行扫描,这个过程我们就不详细讲解了 ,大家可以到WX公众:”任鸟飞逆向“获取PC端的逆向基础讲解。
扫描过后我们同样得到了一个阳光值,并且对齐进行修改后,游戏内的阳光也发生了改变。
那么是不是说我们用CE直接扫描就可以了,无需GG模拟器了呢?
通过观察,我们发现这个地址和GG扫描到的地址很像,但是并不一样。
其实我们扫描的只是虚拟机的地址,而在CE和模拟器内APP之间是有一层虚拟机进行中转的,
比如我们在模拟器内开启了多个APP,这些APP的内存在模拟器内是相对独立的
但是如果我们用CE直接扫描模拟器的话,那么我们扫描到的这些地址都是同一个虚拟机进程的内存地址。
并且我们对这个地址是无法进行访问的,或者说是无法获取到游戏内真正的访问代码
那么CE扫描有没有意义呢?答案是有!
第二种扫描方式——CE+GG
CE和GG是可以配合着扫描的,通过对CE的操作,我们会发现其扫描模拟器的速度非常快,那么我们可以先用CE去进行扫描。
扫描到结果后,讲其修改成一个比较大比较另类的数值,然后用GG扫描这个数值,这样得到的结果会少很多,速度也块很多。
或者,如果我们想扫描一个加密的数值,或者未知的数值,那么可以用CE先把这个值扫出来,然后再用GG扫描精确数值,这样就省去了很多的无用功。大家可以自己尝试扫描一下,看看前两种办法在效率上有多大的差异。
第三种扫描方式——CE桥接模拟器
如果我们不想用GG修改器,是否可以打到第二种方法的效果呢?答案同样是肯定的!
我们可以在模拟器中运行CEServer,他的作用相当于GG,然后通过tcp协议进行通信,也就是一种桥接的方式来和PC端的CE进行交互。
CE通过TCP让CEServer来帮其进行扫描,然后CEServer讲扫描结果通过TCP传递给CE
这样我们就可以直接用CE来扫描的到模拟器中真正的内存地址
当然这种扫描方式也相对于CE直接扫描要慢 一些,因为中间多了一个通信的过程,但是无论怎样,这个扫描的速度是比GG要快很多的。
CE和GG修改器各有优缺点
CE扫描快,功能强大,但是由于体量大也更加容易被检测到,并且需要桥接才能直接扫描。
GG扫描慢,功能少,但是在检测上会安全一些,并且无需桥接,直接扫描。
综合考虑,如果在检测上可以做一些处理,那么用CE桥接的方式是很方便的,否则可以考虑CE+GG的方式。
桥接CE,扫描安卓模拟器
如果想要用CE桥接的方式扫描安卓模拟器,我们需要做一些准备工作
1.下载CE最新版本
https://github.com/cheat-engine/cheat-engine/
然后拉到最下面,下载源码以及编译好的CE
当然我们也可以直接到WX公众:任鸟飞逆向,资源下载中进行下载,同时下载android-ndk,接下来编译CEServer使用
2.编译CEServer
打开下载好的CE源码,到以下目录
ALT+R,输入cmd回车打开命令行窗口
输入cd c:Users22177Desktopcheat-engine-7.4cheat-engine-7.4Cheat Engineceserver dk-buildEXECUTABLE ,回车打开这个目录
然后打开雷电模拟器的开发者模式和U调试
将ndk中的ndk-build.cmd拖入命令行窗口中,回车后完成编译
第一次编译中会有很多错误,忽略即可。
在刚刚打开的目录中会生成3个文件
讲这三个文件夹拷贝到CE文件夹中,
这样我们的准备工作就完成了
3.桥接CEServer
重新打开cmd窗口
输入cd E:leidianLDPlayer4 打开雷电模拟器所在目录
输入adb connect 127.0.0.1:5555 PC端和模拟器链接,这里的5555是雷电模拟器的端口,可以在其官网查到
输入adb push C:Users22177Desktopcecex86ceserver /data/local/tmp/
讲ceserver发送到模拟器的/data/local/tmp/目录下,
输入adb shell 进入设备Linux shell环境,获取设备root权限
输入cd /data/local/tmp/ 进入模拟器ceserver目录,乱码需要打两次
输入chmod 777 ceserver 在Linux shell环境下提高ceserver权限
输入https://www.bilibili.com/read/ceserver 运行ceserver
运行成功以后会看到端口号52736
接下来另外开启一个命令行窗口,
输入cd E:leidianLDPlayer4 打开雷电模拟器所在目录
输入 adb forward tcp:52736 tcp:52736进行端口转发
这一条输出完成后,第一个窗口会弹有内容输出,说明转发成功
4.配置CE,附加进程
打开CE,点击附加按钮
配置完成以后,附加进程目录变成了模拟器中的APP,则说明配置成功了
接下来我们就可以用CE去搜索小游戏的数值了,
虽然速度没有正常CE快,也差不了太多,扫描一个数据用三四秒的时间,已经完胜GG了
下节课我们来通过CE查找偏移表达式,得到基地址,欢迎关注任鸟飞逆向进行交流学习
下面是用到的工具的下载链接
CE下载官网:https://github.com/cheat-engine/cheat-engine/下载最新版本即可
雷电模拟器官网:https://gwdemo.ldmnq.com/建议下载32位版本
GG和小游戏以及其他工具可以到WX公众:任鸟飞逆向下载