首先,android系统 权限分为3级
1.普通权限:通过捆绑进程,把目标APP跟自己的程序 捆绑为一个进程,实现进程内 内存读写 例:VirtualAPP
2.ROOT 权限:可以通过 Ptrace 远程读写内存,调试等。
3.R0权限(驱动权限或内核权限),android内核驱动可以直接编译进内核,也可以动态加载。获得这个权限后,R3 的反调试基本等于纸。不过成本也是极高的,首先需要手机厂商提供BOOTLOAD 解锁,并提供内核源码。据我所知,好像就只有google 跟 小米(老款) 提供。源码有120G左右(科学上网下120G,哎,都是泪,最初我以为只有十几G扩充了4次虚拟机),对应型号找驱动,编译,然后再刷入。所以 这个方法 通用性很差,可能刷成砖,可能找不到源码,可能无法编译。
随着手机越来越私密化,用户对手机安全性的需求极高,这就导致了厂家根本不给 root 权限。更不要说内核源码。
关于ARM 硬件断点
首先ARM是支持硬件断点的,之所以IDA GDB 硬件断点无效的原因,是因为 内核编译默认只有X86 可以使用,原因未知,修改内核代码确实可以实现支持硬件断点。GDB可以断下,IDA 的AS 依旧没法使用。
那么有没有一种简单的方法解决这些问题,可以直接拿到R0 权限去调试呢。之前没有,今天开始有了。。感觉颠覆了什么,很厉害的样子。。。
VAD 是基于libhoudini 技术开发的,可以在X86模拟器 动态调试 ARM Native层。跟真机没有任何区别,并且支持硬件断点。调试过程没有使用 ptrace函数。所以可以无脑过一些检测。(目前只支持雷电3.28,安装包在附件)
1.相比于真机调试,模拟器更为方便,不担心中毒、据金钱泄露,中毒几秒即可恢复。
2.修改空间大,可以轻松的hook内核。反反调试。
3.省钱,至少省去了一部调试手机的钱。
这个软件是完全免费的,没有加任何验证。现在也只是一个雏形,离我心中的东西差的挺远的。
我测试调试的软件并不多,对于需求也在摸索,很多BUG估计也没测试出来。欢迎大家随时反馈。
邮箱:1035933881@qq.com
测试环境 win7x64
后续,打算逐步开放插件,脚本等 功能呢 以及一些资料。
java 动态调试也在日程。
是个很大的工程,但是觉得很有意义,我会拿出业余时间长期更新。
程序是我个人开发的,
作者 清纯的蜡笔小新
QQ群 516805632
参考使用前辈的文章和源码。 以下是名单
CSDN 作者 ariesjzj
github 作者 ele7enxxh
反汇编引擎 capstone
汇编引擎 keystone
1.打开雷电模拟器,安装2048小程序(程序在附件),打开VAD ,点启动服务
2.弹窗点确定
下面是动态调试部分。。数据可以动态修改。
调试一个U3D 游戏并拿到解密后的脚本,游戏 lmcn_v1.87(名字不能说,程序在附件,为什么调试它,因为他很流氓的自己安装到我的模拟器上了,报复的就是这么赤裸)
解压
lmcn_v1.87 打开 lib 。看到libmono.so 典型性的U3D游戏。
拖入IDA 在导出函数 搜索 mono_image_open_from_data_with_name
思路
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-4-20 01:51
被刘彬编辑
,原因: