-
-
[原创]Android逆向调试插件开发
-
发表于:
2018-3-14 10:21
4671
-
Android逆向调试插件
工作需要分析一些apk的机制,写的一个android逆向调试的插件,基于netbeans的,可以对smali代码的每一行下断点,就像windows里面的ollydbg一样好用。
大概原理首先反编译源文件,反编译的同时记录下行信息,并保存在自己设置的专有格式的文件中,用户后续调试器调试。而后打开NetBeans调试器,同时打开一个自研的jdwp的代理,该代理打开上面生成的调试信息文件,用户接管断点信息等。此时可以向ollydbg一样一步步调试了。具体步骤如下:
1
打开命令行
2
调用edi程序反编译需要调试的apk,生成相应的java文件以及包含调试信息的XxX文件(目前这个edi有两个版本,一个是调用apktool反编译,一个是根据dexdump字节写的,还未完善。。这个地方好像没写好,要文件名全名,直接把文件拖到命令行界面下就行)
3
调用JdwpProxy程序打开上面生成的XxX文件
该程序同时接管8700端口(为图方便,一般ddms调试就会转发至该端口),转发至13131(这个数字没意义,随意写死的)
4
打开NetBeans并新建一个项目
添加进去第二步生成的java文件夹,用户后面调试,设置调试选项:
此时环境即配置完毕,只需ddms中选择待调试进程,将该进程转发至8700端口就可以进行相关调试了。(这边有个问题,ddms每次调试断开之后都得再点一次将端口转发至8700,而如果用adb的话没有这个问题,设置一次除非程序挂了,就一直转发在8700端口了)
关于待调试的apk,还是使用的原有apk,如何设置apk可调试,网上方法很多了,我是采用的setpropx(好像是这个名字吧),修改系统中ro.debuggable = 1,让程序变为可调。
界面如下:
因为代码写在加密计算机里了,暂时发不出来,原理及源代码大家有兴趣的话,慢慢放出来,有问题的话欢迎提出来啊
[课程]Linux pwn 探索篇!