Android Studio动态调试smali代码
工具:
Android Studio版本: 3.0.1
smalidea插件: https://github.com/JesusFreke/smali/wiki/smalidea。
反编译工具:本节先用Android Killer,后面介绍apktool。
一 配置插件
下载smalidea插件,然后打卡Android Studio,点击File->Setting->Plugins->Install plugin from disk,选择下载的smalidea.zip文件,安装成功后显示重启Android Studio生效。
二 反编译apk
把第一节编写的激活码程序apk拖入Android Killer中
1 记录apk的包名(com.jhm)和入口Activity(com.jhm.MainActivity)
2 设置该apk的调试属性,改成可调试:AndroidManifest.xml中application标签中设置android:debuggable="true" (不改是不能调试apk的)
三 手机准备
1 修改完调试属性后在Android Killer里,点击Android->编译,成功后生成apk,把这个可调试的apk安装到手机,手机连接电脑打开usb调试。
2 命令行中输入adb shell am start -D -n com.jhm/com.jhm.MainActivity。 开启入口Activity。如图:

四 转发端口
1 Android Studio中点击Tools->Android->Android Device Monitor,如图,监视器监听到了我们的程序com.jhm。

看到,Online值是23635,端口值是8700,记录下,关闭Android Device Monitor。(不要关闭手机里的程序,重新打开后Online值会变的,需要重新转发端口)
2 打开命令行,输入命令转发端口
输入adb forward tcp:端口值 jdwp:Online值,即adb forward tcp:8700 jdwp:23635,结果如图:

说明8700端口被占用了,查找对应的是哪个进程关掉就可以了。
①命令行输入netstat -ano | findstr "8700",回车
,被1220占用了
②查找1220对应的是哪个进程,命令行输入tasklist | findstr "1220",回车
看到是studio64.exe,在任务管理器关闭即可。
占用8700端口的进程关掉了,重新命令行输入adb forward tcp:8700 jdwp:23635,回车即可转发成功。
五 导入smali工程
1 AndroidKiller反编译完成后,点击工程管理器标签页->右击smali目录->打开方式->打开文件路径,在E盘新建Jhm文件夹,把smali文件夹拷贝到Jhm文件夹下,并且重命名smali文件夹为src。
2 Android Studio中点击File->New->Import Project,找到E:\Jhm路径,选中Jhm文件,点击Next一路到Finish。
2 在AndroidStudio打开的新工程里选择浏览模式为Project格式,右击src->Make Directory As->Sources Root设置为根目录。
六 配置远程调试选项
在Android Studio中点击Run->Edit Configurations。点击左上角绿色加号->Remote,Name设置为DebugSmali吧,端口Port设置为8700,点击OK。

七 配置JDK
Android Studio中点击File->Project Structure,选中对应java版本,点击ok。

八 开始调试
1 找到MainActivity, 下几个断点。

2 在Android Studio中点击Run->Debug ‘DebugSmali’,此时程序跑起来,如图:

输入激活码,点击验证,程序断在我们的断点处,F8单步步过,F7单步步入,F9往下执行。OK可以动态调试了。
Android Studio动态调试smali代码的更多相关文章
- Android studio动态调试smali
前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会. 0x01 ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- 动态调试smali代码学习记录
预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<An ...
- Android studio动态调试
Reference: http://cstsinghua.github.io/2016/06/13/Android%20studio%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF ...
- 使用IDEA动态调试smali代码
原创,转载请注明出处. 一般java ide(如eclipse.idea)都可用来进行smali的动态调试,这里选择IDEA. 第1步:使用apktool反编译apk java -jar apktoo ...
- 动态调试smali代码
Android Killer对应用进行反编译为smali代码,看看Manifest文件中application标签里面是否有android:debuggable="true",没有 ...
- Android调试系列—使用android studio调试smali代码
1.工具介绍 使用工具 android killer:用于反编译apk包,得到smali代码 android studio:调试smali代码工具,或者使用idea,android studio就是在 ...
- Android逆向利器和smali代码修改出错举例-入参类型
当smali修改代码出错举例1,log如下: 虚拟机层次: 1.本身做出了预测,寄存器v2是符合要求入参,暗示你这个也许是你想要的.VFY: register1 v2 type 17, wanted ...
- Android Studio & eclipse 调试技巧
如上图设置多个断点,开启调试.想跨断点移动到下一个断点,点击如下图1箭头,程序将运行一个断点到下一个断点之间需要执行的代码.如果后面代码没有断点,再次点击该按钮将会执行完程序.点击箭头2指向的按钮,可 ...
随机推荐
- android电量优化 总结
移动设备电池容量小,耗电较快(基本一天一充) ,故我们在应用开发使用相关组件和方法时候必须考虑耗电情况: 一 通过Battery Historian查看手机的耗电状况, 可以知道Android的在 ...
- jieba分词(2)
结巴分词系统中实现了两种关键词抽取法,一种是TF-IDF关键词抽取算法另一种是TextRank关键词抽取算法,它们都是无监督的算法. 以下是两种算法的使用: #-*- coding:utf-8 -*- ...
- Spring Boot打包war jar 部署tomcat
概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...
- 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage) 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...
- logstash-2-插件配置
配置语法: Logstash必须有一个 input 和一个 output 1, 处理输入的input 1), 从文件录入 logstash使用一个名为 filewatch的 ruby gem库来监听 ...
- 面试:C++String类实现
#include <iostream> #include <cstring> using namespace std; class CString { private: cha ...
- Java的HashCode,Equal和==
----------------------------------------以下是分割线---------------------------------------- 我们都知道Java语言是完 ...
- MySQL主主复制以及使用keepalived保证高可用
1:准备工作 MySQL的安装步骤在此处省略:安装完成一定要做以下准备工作,初始化MySQL,/usr/bin/mysql_secure_installation,设置root密码,删除无效账户以及t ...
- zoj 1760 Doubles(set集合容器的应用)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1760 题目描述: As part of an arithmet ...
- MVC删除操作前confirm提示
本段时间,忙于公司的ERP问题,博客也没有怎样更新了.昨晚于家中学习了MVC时,对删除记录前,让用户有后悔选择.即是说,能先给用户一个提示,然后再让用户决定是否删除记录.以前练习MVC,对删除记录,均 ...