首页
社区
课程
招聘
[原创]让你的Android Studio能够对任意进程进行源码级native debug
2021-11-6 19:40 18758

[原创]让你的Android Studio能够对任意进程进行源码级native debug

2021-11-6 19:40
18758

引言

    在进行逆向分析时我们经常需要将自己的代码注入到第三方进程内悄咪咪的干一些事情,为了能够更直观的看到注入代码是如何工作的,我们往往会使用Android Studio配套的debug工具在被注入的进程内观察自己的代码执行,可以说是相当之舒服了。

    然鹅很不幸的是,有时候用Android Studio attach到第三方进程时会报错,提示"Cannot find module that matches process name xxxxxxx",如下图所示

可以说是相当之蛋疼了,稍微有经验的分析者可能会知道这和native debug有点关系,只需要在attach时选择只debug java代码就能够避免这个问题 ,如下图所示。选择Java Only后就能给继续愉快地debug了。

    一般来说,问题到这里就可以告一段落了,毕竟我们还能借助无敌的ida来完成完成native部分的debug。然鹅ida的汇编级debug很多时候还是不够直观,使用体验终究是不如Android Studio的源码级debug。如果我们能够想办法让Android Studio能够像ida那样对任意进程的native code进行debug,配合上idea良好的debug交互体验,许多问题解决起来就会变得轻松许多了。

结果展示

这里先放github地址:https://github.com/necuil/android_studio_sdk_modify

太长不看的可以直奔github的release内下载最终文件进行替换。

    正式开始之前先放一下最终结果,如下图所示,我们成功对MT管理器开启了Android Studio的native + java级debug,接下来只需要像debug自己的程序一样快乐滴下源码级断点就好了。

    但是这还不够,实际上我们在进行某些特殊的开发时可能需要debug这些进程的子进程,例如分析那些通过execve启动的elf进程等。他们可能是fork出来的,也可能是execve出来的,不过这不重要,可以看到Android Studio的可debug进程列表里显示出了MT管理器的所有子进程

成功将Android Studio的native debugger attach上了pid值为19765的MT管理器的子进程。

    那么接下来就让我们一步一步想办法解决这个问题。

开干

    首先我们需要解决的是"Cannot find module that matches process name xxxxxxx"问题,在我们尝试对第三方的进程进行native debug时as将会弹出这个提示,那么是那里弹出的这个提示呢?很可惜的是这部分代码并不在Android Studio开源的部分里,虽然尝试过手动编译AS进行debug来定位,但是很可惜aosp里的AS源码是不完整的,按照aosp提供的编译文档无法成功编译,当然也可能是我操作有误,如果哪位朋友知道是怎么回事的话欢迎反馈。

    那么我们来思考一下,第三方进程和我们项目里的进程在as看来区别是什么呢?最直观的显然就是进程名了,倘若我们创建一个Application类型的module,然后将其packageName修改成对应的进程名是否就能debug了呢?然鹅这个世界显然没有辣么温柔

只看到一句显眼的

Error while starting native debug session: com.intellij.execution.ExecutionException: Unsupported device. This device cannot be debugged using the native debugger. See log file for details.


未完待续......


[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2021-11-7 20:47 被不吃早饭编辑 ,原因:
收藏
免费 2
打赏
分享
最新回复 (11)
雪    币: 269
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小兔兔呀 2021-11-7 10:24
2
1
火钳刘明
雪    币: 27
活跃值: (801)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 2021-11-7 10:47
3
0

替换文件之后启动as报错

雪    币: 29
活跃值: (5206)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
不吃早饭 2021-11-7 12:15
4
0
amwpecel 替换文件之后启动as报错
这个是基于最新版AS进行的修改,如果是其他版本的话可以根据github提交记录进行移植
雪    币: 7021
活跃值: (1271)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
财神爷999 2021-11-7 14:07
5
0
有时间试试效果!!
雪    币: 0
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cc_debug 2022-10-31 17:22
6
0
然后你没有写完,我补充一点,,只需要把注入代码 的buildid 改成目标的包名就能附加上去调试java 和c 代码了。
雪    币: 29
活跃值: (5206)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
不吃早饭 2022-10-31 18:55
7
0
cc_debug 然后你没有写完,我补充一点,,只需要把注入代码 的buildid 改成目标的包名就能附加上去调试java 和c 代码了。
不需要改,打的patch里有一个地方就是解决这个问题的
雪    币: 4431
活跃值: (8630)
能力值: ( LV9,RANK:181 )
在线值:
发帖
回帖
粉丝
nevinhappy 2 2022-11-3 12:17
8
0
不吃早饭 这个是基于最新版AS进行的修改,如果是其他版本的话可以根据github提交记录进行移植
你补的版本:android-studio-2020.3.1.25-windows.exe
雪    币: 1488
活跃值: (2006)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huluxia 2022-11-15 00:37
9
0
有时间试试
雪    币: 1112
活跃值: (2724)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Amun 2022-11-17 15:22
10
0
mark,催更
雪    币: 1
活跃值: (150)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
暖心系 2023-4-1 22:29
11
0
老板接开发吗?可否留个联系方式
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Android_wej 2023-9-24 15:23
12
0
前辈 可否留个邮箱简单沟通一下
膜拜一下前辈的技术
游客
登录 | 注册 方可回帖
返回