今天教大家如何用AndroidStudio去动态调试已经上线的apk文件(类似我们开发的时候去debug调试代码块效果),这就是逆向的时候用的比较平凡的一种手段,而要更好的了解怎么去动态调试apk这里就得先了解一下这个过程的一些基础知识。
动态调试无非就是把ap提取出来dex,然后再由dex转换成smali文件,然后通过AndroidStudio去动态调试smail文件罢了,不了解smali的可以看看这位大佬的讲解(Smali基础知识)。
那接下来我就亲自带大家走一遍
1.先准备一个apk包(先用一个没有加固过的apk,因为加固过的apk去脱壳也是比较费劲的暂时先不细说,脱壳教程晚点更新),这次我用的是我自己最近开发的一个项目,方便大家理解
2.准备反编译的工具:java环境,apktool,AndroidStudio,smalidea(as里的插件 下载连接JesusFreke / smali / Downloads — Bitbucket)
3.为自己加加油 打打气
解析apk
正式的apkgoogle官方都是不允许apk进行调试的,所以我们先设置apk允许调试
用apktool工具把apk先转成smail
1.把目标apk放到apktool的目录下,点击cmd执行命令 apktool.bat d test.apk
当出现这个test文件夹的时候说明已经成功了
设置apk允许调试
打开test文件夹,找到AndroidManifest文件,在application节点加上:android:debuggable='true'
然后保存文件,进行下一步操作
保存完时候咱们进行回编apk进行签名安装到测试机,等待接下来的工作
通过命令 apktool.bat b test 进行回编apk test是咱们的文件夹如果和我的命名不一样可以替换成自己的(尽量别用中文)
回编译完成会在test文件夹生成一个dist文件夹和一个build文件夹,dist文件夹里面存放的就是回编译后不带有签名的apk文件,build文件夹里面还有一个apk文件夹,里面存放的是回编译后没有打包成apk的文件。但是设备上安装得有签名才能安装 目前我没有深究用的mt管理器 进行重新签名,然后安装到设备上
导入smali源码打AS(smalidea插件必须安装好否则无法debug)
将刚才生成的test文件导入到AndroidStudio中
配置sdk
添加remote类型的调试,port为5005(DDMS共用端口)
adb查看手机进程 adb shell ps 找到你要调试的apk所用的端口 进行转发
使用 jdwp 转发端口:
adb forward tcp:调试端口号 jdwp:进程号
例如:
adb forward tcp:5005 jdwp:8308
然后选择设备 进行调试即可
一直处于发现不了设备
无论是重启AndroidStudio 还是adb shell kill-server 等都一直是Loading Devices的话 试着改一下sdk
就可以了
开始调试
自此完结