安云 anyuntec.com 攻防竞赛|威胁情报| 安全服务 动态调试相对于静态分析难度要大一些,但是更高效。
为什么要调试smali源码,是因为apk用apktool反编译之后,会生成一个smali的文件夹,这里存放了apk对应的smali源码。所以我们需要调试的就是反编译之后的smali源码,这里用到的调试工具是IDEA,用的示例是阿里CTF比赛中的一个题目。 获取smali代码 要调试apk的smali代码,第一步要获取反编译之后的smali代码,这里用的apktool这个程序。这个程序在这里先不细说,会再补充一个apk逆向常见工具使用的章节。利用下面这个命令获取到了apk的smali源码 apktool.bat d AliCrackme_01.apk
导入smali代码到idea中 获取到smali源码之后,第二步就是将源码导入的idea的程序,然后运行此smali代码进行动态调试。 需要将smali文件夹下的文件导入工程
以debug模式启动apk 导入smali程序到idea,apk安装到手机之后,然后就可以动态调试了。 在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. 启动的方法为:am start -n{包(package)名}/{包名}.{活动(activity)名称} 这里需要加-D这个参数,表示enable debugging 程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到。 利用apktool除了可以得到smali代码,还可以得到一个非常重要的文件,相当于是apk的配置文件AndroidManifest.xml,从此文件中可以得到包名和活动名,此apk的包名是com.example.simpleencryption,主活动名是MainActivity,所以可以用 adb shell am start -D -n com.example.simpleencryption/ com.example.simpleencryption.MainActivity来启动程序,也可以将后面的包名省略用 adb shell am start -D -n com.example.simpleencryption/.MainActivity 来启动程序。成功启动后,如下图所示。
配置调试选项 既然是动态调试,肯定要查看程序的端口,这里用ddms这个程序查看即可,DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。 打开ddms查看端口信息,ddms都是以apk的包名显示程序的,这里可以看出需要调试的apk监听了8618端口。
下一步就是添加远程调试了,在idea的运行- |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|