8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
《教我兄弟学Android逆向》04的课后作业。
教程笔记
将apk反编译成smali文件
AndroidKiller
使用AndroidKiller分析apk,然后按照如下图所示操作,即可获取apk反编译之后的smali文件。
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。
利用AS动态调试smali代码
调试前提
在要调试的apk的AndroidManifest.xml文件的application标签里要有android:debuggable="true"这句代码,没有是不能调试的。
所需工具Android Studio
AndroidKiller
DDMS
adb
Android设备/模拟器
……
基本步骤获取apk的smali代码,并且打开DDMS。
找到要调试APK的包名和入口的Activity(可以利用工具AndroidKiller查看)。
安装要调试的apk到手机中,并用数据线连接手机,打开USB调试模式。打开命令行,输入命令 adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity 对apk进行动态调试。这条命令运行后手机屏幕将会进入到调试界面。(如果手机屏幕没有进入到调试界面说明USB没有连接好手机、或者USB调试模式没有打开、或者其他原因。)
查看Android Device Monitor(DDMS),记住下图圈起来的两个值 然后把DDMS关掉。(这里一定要关掉,因为它会占用8700端口,导致后面转发端口失败。)
打开命令行窗口,输入命令 adb forward tcp:8700 jdwp:19509转发8700端口。 (这里jdwp是自己Android Device Monitor中要调试app的Online值 )
打开AS,加载smali代码。如下图,对src文件夹右键–>Make Directory As —>Source Root。
配置远程调试的选项,选择Run–>Edit Configurations并增加一个Remote调试的调试选项,端口选择:8700。
选择File–>Project Structure 配置SDK。
在Smali中下好断点,下好断点之后Run–>Debug’smali’,这里的smali是我们之前配置好的调试选项,此时运行手机上的程序,就可以开始调试了。
课后练习
在第一次按照教程进行尝试时,进行到第9步时,并没有成功启动debugger,而是出现了如下图所示的报错,提示8700端口无法连接,于是重新进行端口转发(应该是等待调试的时间太长,手机与电脑的连接断开了),就可以成功调试了。
在自己尝试动态调试的过程中发现,debug窗口中的变量的具体值是可以通过点击下图所示选项进行修改的,但是watches窗口中的寄存器的具体值是没法修改的。
总结
在第一次完整的配置之后,对于同一个要调试的apk,动态调试的步骤可以简化为——3——>5——>在Android Studio中加载smali代码,然后下断点run debug进行调试
参考资料