android debug bridge下载_Android逆向之调试smali代码

点击上方蓝字 [ 协议分析与还原 ] 关注我们

 介绍Android逆向中调试smali代码的方法。

最近在重整Android逆向分析环境,一切都在从零开始,做下记录,给大家分享。本文介绍Android逆向中smali代码的调试及环境的准备。事先准备如下工具:Android killer:反编译APK应用为smali源码的工具Android studio:调试smali工具smalidea:Android Studio调试smali需要安装的插件Android Device Monitor:用来查看待调试进程和端口待分析应用和调试手机:废话

01

— 获取smali我们拿到一个Android的APK应用后,使用Android killer很容易就将它转换成smali工程文件,这个就不用详细介绍了,注意如果需要请将里面用到的APKtool更新成新的,反编译完成的内容像下面这样子:

dbbb65553d0bcccd405b3ec61bae5c05.png

02

— Android Studio插件安装 反编译出来的s mali文件,如果Android Studio没有安装smalidea插件, 是 没法 直接 调试的 ,导入Android killer产生的工程,在Run菜单下,可以看到加断点的项都是灰色的:

96de53d923fcc4ac366a295f9b0c6e8f.png

smalidea插件是用来使Android Studio可以调试smali的插件,下载地址是:https://bitbucket.org/JesusFreke/smali/downloads/在这个页面找smalidea,最新版本是smalidea-0.05.zip。其它的下载链接可以忽略,是做其它的事情的,这里用不上。下面描述 smalidea安装过程,从 Android Studio的File-->settings菜单进入,点plugins标签进入插件安装页面:

634bc06a14f9c7842d475977cf8d06f8.png

再点击按钮 Install plugin from disk...,选择你提前下载好的smalidea压缩包再点ok进行安装:

28e77d766098478252d139fd9935329c.png

安装完可以在Plugins页面看到安装的插件,需要重启Android Studio才能生效:

5bd2c3fd07f5b0b39d8217d228278b2e.png

重启后,就能正常调试加断点了:

9b68f8b0cbb4bba220d3d163d2cc5f5e.png

下面,就可以来调试了。

03

— 调试过程Android Studio调试首先需要进行调试的配置,在菜单Run-->Edit Configurations...下,打开configuration页面,左上角有个+,选择remote:

bbf8e8f678220eaa3c2bfd6c782a7841.png

出现具体的配置页面:

7915ddc04a8658012a869c2cf6ad1250.png

注意选中的端口框,需要根据Android Device Monitor中待调试进程的具体情况修改,或者直接8700。

在Android Device Monitor中,会看见进程和端口信息:

ecf9669fb048e5c4da42826d7fa0718b.png

左侧第一栏是进程名,第二栏是进程号,第五栏是端口,选中一个进程,则会看见端口这栏有两个值,8xxx/8700这样子,如果调试配置中写的是8700,则在debug时,需要在ADM中选中具体进程,如果不想这样,则需要配置前面的8xxx这个值。

在下方的logcat里,还能看到进程的运行日志,有的时候需要用到,不过这里暂时用不到。

当然如果你使用adb shell命令从头开始启动应用调试,则直接使用8700就可以了。

另外,你还可以使用adb forward 命令进行端口转发,将调试手机的某个进程与调试机器配置的端口之间建立通道,从而进行调试,只是没有上面那样方便。

配置完了后,就可以正式调试了,点菜单Run-->Debug'xxxx',其中xxxx是你上面配置的调试项目名称,默认是unnamed:

edb1de22826a4903404f8ce9fa00209b.png

你可以在smali的需要调试的地方打断点,当程序运行到你设置的断点时,就会断住,各类窗口很丰富,可在variables窗口看到或修改当前状态的一些变量,frames窗口看到调用层次,还可以在watches窗口中加寄存器变量进行观察和修改:

ba8f0ddf5b674e6612f19f033f764968.png

当然,需要注意,有些地方没办法加断点,那就在前后合适的地方加,还有些地方部分寄存器值无法查看,那就换个方式,具体问题具体分析,这里只是介绍常规方法。

04

— 总结这是最基础的工具使用,希望能对一些朋友有帮助。
8b4f0042f0d98d0df5d6b1cf1d706052.png 长按进行关注,时刻进行交流。 点击“ 在看 ”,与朋友一起分享↘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值