[原创]让你的Android Studio能够对任意进程进行源码级native debug
1天前
1711
引言
在进行逆向分析时我们经常需要将自己的代码注入到第三方进程内悄咪咪的干一些事情,为了能够更直观的看到注入代码是如何工作的,我们往往会使用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.
未完待续……
[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!
最后于 15小时前
被不吃早饭编辑
,原因:
#逆向分析
#NDK分析
#协议分析
#程序开发
#HOOK注入
#源码分析
#工具脚本
#其他
收藏
・12
点赞・1
打赏
分享
最新回复 (4) |
|
---|---|
|
火钳刘明
|
|
替换文件之后启动as报错 |
|
|
|
有时间试试效果!!
|
|
请登录后查看评论内容