apk逆向 - smali动态调试
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,反编译效果如下:

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

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

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

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

在手机上安装apk后以在terminal运行如下命令使apk以调试模式运行
adb shell am start -D -n packageName/ActivityName
我测试所使用的apk包名为com.example.findpass,活动名为com.example.findpass.MainActivity(可简写为.MainActivity)

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

在AS中设置断点

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

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

apk逆向 - smali动态调试的更多相关文章
- Android APK程序的smali动态调试
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622 一.Apktool的下载和安装 Apktool是Android逆向分 ...
- [转]Android逆向之动态调试总结
一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...
- 【Android 逆向】动态调试AliCrackme_1
1 试玩 apk # 安装APK到真机 adb install AliCrackme_1.apk 打开apk,投石问路,输入123试一下 2 将apk 拖入androidKiller,得到反编译的sm ...
- 利用IDA6.6进行apk dex代码动态调试
网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码.正好现在需要动态调试,所以顺便练习一下. 根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足 ...
- iOS逆向系列-动态调试
Xcode调试App原理 Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugser ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- 安卓动态调试七种武器之长生剑 - Smali Instrumentation
安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是 ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
随机推荐
- EF 二级缓存 EFSecondLevelCache
EFSecondLevelCache ======= Entity Framework .x Second Level Caching Library. 二级缓存是一个查询缓存.EF命令的结果将存储在 ...
- Android基础总结(八)
服务两种启动方式(掌握) startService 开始服务,会使进程变成为服务进程 启动服务的activity和服务不再有一毛钱关系 bindService 绑定服务不会使进程变成服务进程 绑定服务 ...
- Emeditor批量修改文件编码格式(UTF-8)
采用宏的形式进行,直接在Emeidor导入宏即可使用: emeditor导入宏:[宏]->[自定义]->[新建]->找到EncodingChange.jsee文件即可. 链接:htt ...
- 【Android群英传】学习笔记(二)
在本篇笔记中,小编将记录关于Android Studio使用过程的小技巧 在下面文章为Android Studio 简称As ① 使用Android Studio第一次创建项目等待时间很长? 原因: ...
- JavaScript中让Html页面中循环播放文字
JavaScript中让Html页面中循环播放文字 <html> <head> <meta http-equiv="Content-Type" con ...
- CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...
- Web API系列(一)设计经验与总结
在移动互联网的时代, Web服务已经成为了异构系统之间的互联与集成的主要手段,各种 Web服务几乎都采用REST风格的Web Api来构建. 通过Http协议的形式来. 以Get/Post方式发送请求 ...
- 关于node的http模块
var http = require('http'); /** * 创建服务器的两种写法,第一种写法如下 * 由于server已经继承了EventEmitter的事件功能,所以可以使用高级函数编写方式 ...
- SQL 实用函数
CREATE FUNCTION [dbo].[varcharmax2table] ( @value VARCHAR(MAX) , @separator VARCHAR(255) ) RETURNS T ...
- 出现 cannot be resolved or is not a field 错误
删除R.Java文件,这时,系统会重新生成一个R.java; 删除java代码中的"import Android.R"文件. 重新导入正确的包.