android逆向分析之动态调试smali

一、概述

平时逆向分析android应用的时候最常见的就是使用jeb或者jadx等工具静态反编译apk,查看静态代码逻辑。进阶一点就使用frida或者xposed等动态调试工具进行函数插桩,动态分析代码逻辑。但是遇到一些复杂的业务场景,通过这两种方式很难理清楚代码流程。这个时候动态调试smali就显得及其重要了,通过动态调试smali代码,能够做到跟踪每一条java虚拟机指令,进而能够很清晰的跟踪分析代码逻辑。本文记录从0开始搭建android smali调试环境。

二、调试环境准备

2.1 常规android逆向环境

apktool,android studio

2.1 Android studio安装smaliidea插件:https://bitbucket.org/JesusFreke/smali/downloads/?tab=downloads

图片.png

下载插件,android studio中安装本地插件

三、应用调试

3.1 构建smali工程

使用apktool反编译apk文件 ,可以看到生成文件夹下面有很多smali目录。

图片.png

将所有smali文件夹下的文件集合到一个文件夹下,这里新建一个all文件夹,然后利用命令一键完成。cp -r smali*/* all
图片.png

这样all文件夹下就有所有smali文件了。接下来用android studio导入工程,工程目录选all文件夹,导入完成后在all文件夹右击,将all目录设置为source root目录。
图片.png

至此,smali工程构建完成

3.2 调试应用

android studio中添加调试配置,新建一个Remote JVM Debug配置。配置如下,名称和端口号可以随意。

图片.png

开启应用调试配置:可以apk中配置或者设备开启全局可调试。这里利用magisk开启全局可调试,进入adb shell,su执行下列两行就可开启全局可调式。

magisk resetprop ro.debuggable 1
stop;start;

启动应用(可调式启动) ,这里启动组件是 包名/launcher全类名,可以在manifest自行查找

图片.png

启动后界面会停留在这个状态,等待调试器附加。
图片.png

此时回到android studio,在右上角选择设备中的目标应用,并且attach上去 ,应用恢复正常运行。


图片.png

smali工程中断点可以先前就下好,也可现在下断点,只要在执行到断点之前下好断点都可以。接下来就可以等待断点触发,开启调试之旅了
断点触发:

图片.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容