学android逆向能干,教我兄弟学Android逆向04

本文详细介绍了使用AndroidKiller和DDMS等工具进行Android应用逆向调试的过程,包括apk反编译、smali代码获取及动态调试等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

《教我兄弟学Android逆向》04的课后作业。

教程笔记

将apk反编译成smali文件

AndroidKiller

使用AndroidKiller分析apk,然后按照如下图所示操作,即可获取apk反编译之后的smali文件。

74323b8fd56bab459bee036e462c63f0.png

apktool

使用命令apktool d xxx.apk即可反编译apk并获得其smali代码。

在Android Studio中打开DDMS

AS3.0之后,在菜单栏的tools下就没有Android这个选项了,也就没法很快捷的打开DDMS工具,google官方文档对于此种情况下打开DDMS的方式的说明如下。Start Android Device Monitor

To start the standalone Device Monitor application, enter the following on the command line in the android-sdk/tools/ directory:monitor.

也就是可通过以下方式打开DDMS。找到AndroidStudio配置的SDK路径,如下图;

在SDK的android-sdk/tools/路径下找到批处理文件monitor.bat;

双击monitor.bat即可打开DDMS。

e02cd5a03681bc2c967964c96d191a7b.png

利用AS动态调试smali代码

调试前提

在要调试的apk的AndroidManifest.xml文件的application标签里要有android:debuggable="true"这句代码,没有是不能调试的。

所需工具Android Studio

AndroidKiller

DDMS

adb

Android设备/模拟器

……

基本步骤获取apk的smali代码,并且打开DDMS。

找到要调试APK的包名和入口的Activity(可以利用工具AndroidKiller查看)。

4a7c8ff78b4aa63f3f0f1bace70336ec.png安装要调试的apk到手机中,并用数据线连接手机,打开USB调试模式。打开命令行,输入命令 adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity 对apk进行动态调试。这条命令运行后手机屏幕将会进入到调试界面。(如果手机屏幕没有进入到调试界面说明USB没有连接好手机、或者USB调试模式没有打开、或者其他原因。)

查看Android Device Monitor(DDMS),记住下图圈起来的两个值 然后把DDMS关掉。(这里一定要关掉,因为它会占用8700端口,导致后面转发端口失败。)

8e3caedde1e0758b6a0dfa99dbac1c54.png打开命令行窗口,输入命令 adb forward tcp:8700 jdwp:19509转发8700端口。 (这里jdwp是自己Android Device Monitor中要调试app的Online值 )

打开AS,加载smali代码。如下图,对src文件夹右键–>Make Directory As —>Source Root。

947ecd2c6ae0fe96faadd528854554c5.png配置远程调试的选项,选择Run–>Edit Configurations并增加一个Remote调试的调试选项,端口选择:8700。

选择File–>Project Structure 配置SDK。

1e6e4aff0b55077d1ea583e3426cc418.png在Smali中下好断点,下好断点之后Run–>Debug’smali’,这里的smali是我们之前配置好的调试选项,此时运行手机上的程序,就可以开始调试了。

4f714f844547f7b55c972d6ed2e17ff1.png

课后练习

在第一次按照教程进行尝试时,进行到第9步时,并没有成功启动debugger,而是出现了如下图所示的报错,提示8700端口无法连接,于是重新进行端口转发(应该是等待调试的时间太长,手机与电脑的连接断开了),就可以成功调试了。

5fa1fe7e37a6a556a0f28907d6e1ee36.png

69689d3a8201fb9660e1e19d2ead1ca4.png

在自己尝试动态调试的过程中发现,debug窗口中的变量的具体值是可以通过点击下图所示选项进行修改的,但是watches窗口中的寄存器的具体值是没法修改的。

c212f8e810bcdaf9ecf696bce82e24ab.png

总结

在第一次完整的配置之后,对于同一个要调试的apk,动态调试的步骤可以简化为——3——>5——>在Android Studio中加载smali代码,然后下断点run debug进行调试

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值