工具:

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代码的更多相关文章

  1. Android studio动态调试smali

    前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会.   0x01 ...

  2. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

  3. 动态调试smali代码学习记录

    预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<An ...

  4. Android studio动态调试

    Reference:  http://cstsinghua.github.io/2016/06/13/Android%20studio%E5%8A%A8%E6%80%81%E8%B0%83%E8%AF ...

  5. 使用IDEA动态调试smali代码

    原创,转载请注明出处. 一般java ide(如eclipse.idea)都可用来进行smali的动态调试,这里选择IDEA. 第1步:使用apktool反编译apk java -jar apktoo ...

  6. 动态调试smali代码

    Android Killer对应用进行反编译为smali代码,看看Manifest文件中application标签里面是否有android:debuggable="true",没有 ...

  7. Android调试系列—使用android studio调试smali代码

    1.工具介绍 使用工具 android killer:用于反编译apk包,得到smali代码 android studio:调试smali代码工具,或者使用idea,android studio就是在 ...

  8. Android逆向利器和smali代码修改出错举例-入参类型

    当smali修改代码出错举例1,log如下: 虚拟机层次: 1.本身做出了预测,寄存器v2是符合要求入参,暗示你这个也许是你想要的.VFY: register1 v2 type 17, wanted ...

  9. Android Studio & eclipse 调试技巧

    如上图设置多个断点,开启调试.想跨断点移动到下一个断点,点击如下图1箭头,程序将运行一个断点到下一个断点之间需要执行的代码.如果后面代码没有断点,再次点击该按钮将会执行完程序.点击箭头2指向的按钮,可 ...

随机推荐

  1. Identity Server4学习系列三

    1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识, ...

  2. Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  3. Android在代码中获取应用签名

    平时都是用AS敲命令获取签名信息...还没有在代码中获取过签名~ 也算是老编程了,没做过这个稍微有点尴尬...本着有好轮子就用的原则,网上找了几篇博客,这块内容已经很完善了,我也没什么可以优化的... ...

  4. centos7 安装配置postgresql

    考:https://www.linuxidc.com/Linux/2017-10/147536.htm http://blog.51cto.com/12482328/2090844 https://w ...

  5. Docker环境下搭建DNS LVS(keepAlived) OpenResty服务器简易集群

    现在上网已经成为每个人必备的技能,打开浏览器,输入网址,回车,简单的几步就能浏览到漂亮的网页,那从请求发出到返回漂亮的页面是怎么做到的呢,我将从公司中一般的分层架构角度考虑搭建一个简易集群来实现.目标 ...

  6. PHP filter_input() 函数

    以往,对于常见的SQL注入等漏洞,采取的方式一般都是对数据进行过滤,而对$_GET/$_POST/$_COOKIE/$_SERVER等全局数组变量的直接使用是不够安全的,故PHP 5.2.0版本以后, ...

  7. 几种流行的AJAX框架对比:Jquery,Mootools,Dojo,ExtJs,Dwr

    1:Jquery 主页:http://jquery.com/ 设计思想:简洁的方案思想,几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性). ...

  8. 第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

    第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  ...

  9. Tomcat7.0安装配置详细(图文)

    说明:Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等Tomca ...

  10. 彻底理解voliate

    1.voliate简介 在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥 ...