我女朋友都会的安卓逆向(四 动态调试smali)

现在我们已经玩了好几天的静态看代码了,好没意思,今天我们来动态调试一个smali试试。

今天调试的软件:

apk链接:https://pan.baidu.com/s/1smNIrST 密码:uzsa

准备工具:

1、Android Studio

2、Androidkiller

3、ideasmali

ideasmali下载链接:

链接:https://pan.baidu.com/s/1htl26qS 密码:0pre

接下来我们就开始吧!

一.用AndroidKiller把apk反编译成smali文件

首先把apk拉到AndroidKiller中 点工程管理器 点smali目录右键 打开方式-打开文件路径,在随便一个地方(全英文路径)新建一个jwx02文件夹 然后把打开文件路径目录里的smali文件夹复制到E盘并改名为src 然后就可以用AndroidStudio导入src了

二.要用AndroidStudio动态调试smali代码 首先要安装ideasmali插件

打开AndroidStudio,File--Setting--Pulgins,然后如图:

把刚才下载的压缩文件导入进来重启就可以用了。

这里再多说一点,跟进下面路径:

我们还需要下载一个sdk,一会有大用。

三.开始动调

1.用AndroidKiller打开要调试的APK 这里是jwx02.apk

2.记住包名hfdcxy.com.myapplication 和入口的Activity名 hfdcxy.com.myapplication.MainActivity

这里要注意一下 在application标签里面要有 android:debuggable="true" 这句代码,没有是不能调试apk的  现在调试的这个例子默认是有这句代码的 有的apk中没有这句代码要自行添加上。

接下来哦我们把自己要调试的APK安装到手机上,数据线连接手机,打开USB调试模式。这里我用的夜神模拟器,也推荐大家用,挺不错的。

我们先把abd加到PATH环境变量里,这个目录在你装的sdk的platform-tools中,到platform-tools的路径加入环境变量就好了(怎么加环境变量不会的自己找以下吧)。

我这里用的夜神模拟器,所以先在cmd运行adb connect 127.0.0.1:62001连接到模拟器,然后运行

adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity

对apk进行动态调试 这条命令运行后手机屏幕将会进入到调试界面(如果手机屏幕没有进入到调试界面说明USB没有连接好手机 或者USB调试模式 没有打开 或者其他原因)

接下来我们需要用到Android Device Monitor,说一下,还是sdk的目录下tools,找到monitor.bat,我们会来到以下界面:

记住红色小虫子后面的3858和8700(每次运行都不一样的),然后关掉Android Device Monitor,要不后面端口冲突。

回到cmd运行adb forward tcp:8700 jdwp:3858

接下来我们导入刚才导出来的jwx02

点击Android选择Project 对之前反编译的 jwx02/src文件夹右键-->Make Directory As --->Source Root

配置远程调试的选项,选择Run-->Edit Configurations 并增加一个Remote调试的调试选项,端口选择:8700

选择File-->Project Structure 配置JDK

接下来我们就可以下断点了(在代码左边那里点一下就下了):

然后我们点一下右上角的小虫子我们就可以调试了

然后我们到手机里输入用户名和密码,登陆就断在我们的断点处了。(如果这里出现端口冲突啥的,重启下adb。adb kill-server和adb start-server)

这里的命令和od的命令都差不多,f8步过,f9运行完,挺不错的

下面的框里可以看到各种信息

 

这个加号可以输入我们想观察的寄存器的值。

这样基本就差不多了,我们可以多下几个断点来观察程序的运行逻辑,这篇就说这么多吧,希望大家能多动手,多思考,这就是网安的捷径,加油!!!

 

 

参考文章:https://www.52pojie.cn/thread-658865-1-1.html