apk逆向

author: Dlive

date: 2016/10/6

0x00 前言

​ 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑吧。

0x01 Smali的动态调试

​ 这里介绍一种比较方便的调试方法,这个调试方法不需要重打包apk,操作简单也比较常用。

1.调试环境

​ 推荐一下AndroidStudio(下文简称AS)这款IDE,既然Google已经有亲儿子AS,我觉得Eclipse其实没有什么太大使用必要了。

​ 关于怎么安装AS我就不说了,网上随便都能搜到很多帖子。

​ 安装后AS后,想要动态调试Smali还需要安装一个插件Smalidea,可以在AS的settings->plugins里面安装。(插件下载链接:http://pan.baidu.com/s/1o8RL9jW)

​ 我的调试环境是一台root过的且开启了调试功能的手机(ps.模拟器应该可以,我没试过)

​ 如何开启调试功能,比较简单的方法是安装一个xposed插件:xinstaller(安装可参考:http://www.open-open.com/lib/view/open1426304176732.html)

2.调试步骤

​ 首先使用AndroidKiller反编译apk,反编译效果如下:

0

​ 使用AS打开(File->Open)反编译结果所在文件夹(Project)

1

​ 在AS中配置远程调试,打开Run->Edit Configurations,添加远程调试 (点击如下图加号选择Remote)

3

​ 配置远程调试,Name随便填就好,host为localhost,端口8700

4

​ 打开monitor(安装SDK后在命令行下直接输入monitor即可),如果手机成功开启了调试功能,可以在monitor中看到正在运行的apk包名

5

​ 在手机上安装apk后以在terminal运行如下命令使apk以调试模式运行

adb shell am start -D -n packageName/ActivityName

​ 我测试所使用的apk包名为com.example.findpass,活动名为com.example.findpass.MainActivity(可简写为.MainActivity)

6

​ 运行上述命令之后可以看到手机屏幕上会弹出一个Waitting For Debugger的框,monitor中com.example.findpass进程前会有个红色的小虫子的图标

7

​ 在AS中设置断点

2

​ 然后选择Run/Debug,找到刚刚设置的调试选项进行调试即可

    你可以在调试器中看到变量的值

注:本博客文章转载需带上原文链接
原文地址:https://www.cnblogs.com/dliv3/p/5935957.html