Android逆向之路---IDEA动态调试smali语言

我的个人小站开始发布啦,欢迎来逛逛:http://martinhan.site

前言

apk在混淆了之后我们通过静态分析有时候是远远不够的,就需要动态调试smali语言了,在以前我们用的都是eclipse配合apktool动态调试apk,如今android studio如此普及,我们可以用IDEA调试。

准备的工具

注意:idea推荐用14,不推荐用最新的android studio,因为本人测试,最新的android studio装上smalidea0.03后打不上断点

准备打出可调试的apk

使用apktools拆包,执行命令

apktool d mytestapp.apk

如图

然后我们进入mytestapp文件夹,编辑AndroidManifest.xml,在Application标签里面加上android:debuggable="true",这样我们再回编译的时候就可以调试了,由于我的apk是debug版本所以会默认带

这里写图片描述

修改完之后我们执行指令回编译,如图

apktool b mytestapp

这里写图片描述
执行完成我们进入mytestapp\dist文件夹,对我们编译好的文件进行签名,把我的签名文件MartinHan.jks (下载地址) 拷贝到当前文件夹,密码输入:111111。
然后安装签名后app到手机

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "MartinHan.jks" -signedjar _signed.apk "mytestapp.apk" "111111"

adb install _signed.apk

正确配置IDEA,安装smalidea插件,准备调试

我们安装好IDEA,然后准备安装smalidea插件 File -> Settings -> Plugins
然后点击 Install plugin from disk 如图
这里写图片描述
然后安装完成了之后我们重启IDEA。编译器就配置好了

开始配置动态调试

我们打开IDEA,File -> Open,然后选择我们mytestapp文件夹,就是我们执行apktool d mytestapp后生成的文件夹。
点击OK,用IDEA将这个文件夹当成一个项目打开。

点击Run -> Edit Configurations 打开如图所示对话框,点击绿色加号,选择Remote

这里写图片描述

接下来把端口改成8700,如图
这里写图片描述

点击ok确定,远程调试我们就配置好了,动手开始调试。

开始调试

我们首先在手机端打开mytestapp,如图
这里写图片描述

打开ddms我们就看到回编译的程序了,并且是可调式状态,我们鼠标选中这个进程
这里写图片描述

然后我们点击IDEA的调试,按钮,如图
这里写图片描述
然后我们的IDEA出现了连接上了,表示现在已经可以动态调试了
这里写图片描述

打断点,单步调试

根据静态分析,我们分析到了MainActivity 1onClickButtonMainActivity 1的第54行打好断点,如图
这里写图片描述

此时我们点击Button,发现断点断到了这里,如图
这里写图片描述
至此,用IDEA动态调试android apk成功

写在结尾

这个apk是我写的一个apk,在真正的动态调试中,很有可能,开发人员在程序中加入了检测调试器的代码,还需要自己鉴别代码,并且注释掉,或者更改掉。

还有的apk进行了加壳,需要首先脱壳。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值