首页
社区
课程
招聘
[原创]Virtual Andriod Debug X86 模拟器专用调试器
发表于: 2019-2-1 17:23 24677

[原创]Virtual Andriod Debug X86 模拟器专用调试器

2019-2-1 17:23
24677

     首先,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

思路 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-4-20 01:51 被刘彬编辑 ,原因:
收藏
免费 12
支持
分享
打赏 + 11.00雪花
打赏次数 2 雪花 + 11.00
 
赞赏  陌上君   +10.00 2019/04/03 厉害,好东西,支持,#89要是有个所有一键断所有子程序就爽了
赞赏  Editor   +1.00 2019/02/01 精品文章~赞!果断收藏
最新回复 (49)
雪    币: 178
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
牛比
2019-2-1 17:37
0
雪    币: 26399
活跃值: (63262)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
3
感谢分享!
2019-2-1 17:58
0
雪    币: 13218
活跃值: (4276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
必须支持...
2019-2-1 18:33
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
5
支持一个 
2019-2-1 18:43
0
雪    币: 188
活跃值: (631)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个要支持了。
2019-2-1 19:23
0
雪    币: 2670
活跃值: (2048)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
支持一个.牛
2019-2-1 22:26
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
QQ群 516805632 -- 查无此群。。。
2019-2-2 00:36
0
雪    币: 456
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
无边 QQ群 516805632 -- 查无此群。。。
奇怪 群号没错,不知道怎么被屏蔽了
2019-2-2 04:51
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
2019-2-2 08:42
0
雪    币: 2719
活跃值: (1589)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
支持
2019-2-2 09:16
0
雪    币: 14823
活跃值: (6058)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看起来很强,年后测试一下怎么样。
谢谢提供这么好的东东
2019-2-2 10:02
0
雪    币: 53
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
2019-2-2 11:26
0
雪    币: 24185
活跃值: (5304)
能力值: ( LV12,RANK:529 )
在线值:
发帖
回帖
粉丝
14
感谢分享
2019-2-2 15:58
0
雪    币: 562
活跃值: (4325)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
顶一个,想法不错
2019-2-2 16:44
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
厉害,支持!!
2019-2-2 18:03
0
雪    币: 222
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
如果是基于libhoudini.so 可能是有局限性的。
2019-2-2 18:04
0
雪    币: 456
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
IceExt 如果是基于libhoudini.so 可能是有局限性的。
比如呢?
2019-2-2 18:33
0
雪    币: 164
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
很强
2019-2-2 19:00
0
雪    币: 2440
活跃值: (242)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
20
牛逼
2019-2-2 19:13
0
雪    币: 222
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
刘彬 比如呢?
比如一开始是解释执行,然后会jit方式执行。jit后就不会再对应arm代码了。如果强制用解释执行,会很慢。所以暂时觉得这种方式就是个玩具。
2019-2-2 19:36
0
雪    币: 10801
活跃值: (4432)
能力值: ( LV12,RANK:404 )
在线值:
发帖
回帖
粉丝
22
强的一批
2019-2-2 19:45
0
雪    币: 456
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
IceExt 比如一开始是解释执行,然后会jit方式执行。jit后就不会再对应arm代码了。如果强制用解释执行,会很慢。所以暂时觉得这种方式就是个玩具。
可以区域强行解析
2019-2-2 19:51
0
雪    币: 14823
活跃值: (6058)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
IceExt 比如一开始是解释执行,然后会jit方式执行。jit后就不会再对应arm代码了。如果强制用解释执行,会很慢。所以暂时觉得这种方式就是个玩具。
应该是你没有看懂?这个主要是用来调试ARM的so文件。在x86模拟器跑arm代码一般都是解释执行arm指令。
“基于libhoudini 技术开发的,可以在X86模拟器 动态调试 ARM Native层”
2019-2-3 09:42
0
雪    币: 2714
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
6666
2019-2-3 14:50
0
游客
登录 | 注册 方可回帖
返回
//