Android Studio 3.6 调试 smali的全过程

Android Studio 3.6 正式版终于发布了,快来围观,点击查看。

 简介

Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址),官方所说的基于Jasmin/dedexer语法,实际根不知道是什么鬼……

Smali支持注解、调试信息、行数信息等基本Java的基本特性,可以说是很接近Java编译在JVM上的中间语言了,一般用来做Android程序的逆向工程,还可以。。搞搞小名堂

个人认为Smali只是用于做反汇编的一种语言实现,如果可以,自己也能定义一套这样的语言,实现反汇编的效果

好了,下面看下正文。

以前在Android Studio中调试 smali 还是非常麻烦的时候,配置不好就是

Error running Smali: Unable to open debugger port (localhost:8700): java.io.IOException "handshake failed - connection prematurally closed

目前最新版的 Android Studio 利用附加功能调试 smali 非常方便 ,操作步骤如下:

文中会用到工具及下载地址:

①、apktool.jar(目前最新版 v2.4.1),用于反编译smali,

下载地址:    https://ibotpeaches.github.io/Apktool/

②、Android Studio (目前最新版本 3.6)用于Android开发调试IDE,

下载地址: https://developer.android.google.cn/studio/

③、smalidea-0.05.zip (目前最新版 0.05),AS 插件,用来给smali下断点,单步调试,

下载地址      https://bitbucket.org/JesusFreke/smali/downloads/

1.  先配置好Android Studio开发环境,这步就略去2. Android Studio中安装 smalidea 插件,先从官网下载 smalidea zip包,然后在 Android 中依次选择:

File   -->  Setting   将会弹出设置对话框

然后在设置对话框依次选择:  Plugins   -->  <设置图标>  --> Install Plugin from Disk...

在弹出选择对话框中,找到下载好的 smalidea 压缩包,选择ok即可

至此,插件安装就完成了,关闭 Android Studio

3. 用 apktool 反编译 apk

使用命令 : java.exe -jar  apktool.jar d -f  <xxxx.apk>  -o <xxxx目录>

也可以直接使用 ApkTool 集成环境(如果反编译失败可以替换其中的 apktool.jar 至最新版):

在 反编译出来的 AndroidManifest.xml 的 application 节点添加 android:debuggable="true"

然后在 主 Activity 中加入  invoke-static {},Landroid/os/Debug;->waitForDebugger()V

重建且签名 apk

安装 重建后的 apk 到手机

(这步如果重新打包失败,可以安装原始包,把手机 root 配置/default.prop 的 ro.debuggable=1 开启全局调试。

然后用命令启动 Activiry : adb shell am start -D -n package属性的值/android:name属性的值  )

4. 将 反编译工程导入到 Android Studio

默认选择 Create project from existing sources ,一路 next ,最后点击 Finish 即可

用 Project 视图,在项目目录右键  --> Mark Directory as ... --> Sources root

5. 展开 smali 目录选择刚才添加 waitForDebugger 代码的 smali 文件下一行下断点

6. 运行手机上安装的apk(apk会假死停在 waitForDebugger 代码处,等待调试器)。

7.在Android Studio选择附加

此时,已经 Attach 到进程中,可以快乐的调试了

总结

到此这篇关于Android Studio 3.6 调试 smali的全过程的文章就介绍到这了,更多相关Android Studio 3.6 调试 smali内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

赞 (0)

相关推荐

  • Android Studio 3.6 正式版终于发布了,快来围观

    百度云 下载地址 链接: https://pan.baidu.com/s/1I6HDq739DwycwA3JMZ4acQ 提取码: qr5t 如题,Android Studio 3.6 正式版终于发布了,值得兴奋呀,毕竟 3.5 大版本更新也已经差不多半年了,撒花撒花!这次更新又更新了什么呢? 包括有设计.开发.构建.测试.优化等多方面,下面我们来看看 Release Notes 写了些什么吧! Release Notes 我们很高兴宣布 Android Studio 3.6 发布稳定版本了,该

  • 分享安装Android Studio3.6的经验教训

    在上篇文章给大家介绍了Android Studio 3.6 正式版终于发布了,快来围观,需要的朋友可以点击查看,今天给大家分享我安装Android Studio3.6的一次惨烈教训. 前言: 首先,坐下来想一想,到底有多惨痛. 目的: 安装AS3.6 时间消耗1 2.26号17点到8点半(3个半小时) 时间消耗2 2.27号早8点到11点(3个小时) 总时长 6个半小时 仅仅就是安装一个AS,这么长时间,所以怀疑人生,怀疑智商(成功之后欲哭无泪).  事发缘由: 看,这万恶的C盘,为了让系统玩L

  • Android Studio 3.6 调试 smali的全过程

    Android Studio 3.6 正式版终于发布了,快来围观,点击查看.  简介 Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址),官方所说的基于Jasmin/dedexer语法,实际根不知道是什么鬼-- Smali支持注解.调试信息.行数信息等基本Java的基本特性,可以说是很接近Java编译在JVM上的中间语言了,一般用来做Android程序

  • Android Studio ADB网络调试汇总

    本文为大家汇总了Android Studio ADB网络调试的使用方法,供大家参考,具体内容如下 随着技术的发展,现在的安卓手机大部分开始使用type-c接口了,这对于我们安卓程序猿来说也不是件好事情哈,如果要在不同版本手机做测试,每次调试程序的时候是不是要换数据线呢,当然二合一的数据线接口用起来也麻烦.今天就想着研究下网络调试应用程序,用起来很棒,给大家分享一下吧^_^ 首先请确保你的设备和电脑处于同一局域网络! 下面开始介绍两种连接方法. 1.使用AS命令控制台adb命令手动调试 USB连接

  • Android studio 连接手机调试操作步骤

    最近正在研究AS在使用手机调试时遇到了一点问题始终找不到设备,在网上找了很多帖子说的都不太对路,下面根据我自己操作的实际经验,总结一下我的操作方法: 1.我假设你已经搞定了前面gradle和build(前面配置各种包的版本问题,也是很恶心的). 2.打开SDK  Manager,如下图图所示,有两种方法. 3.进入界面后如下图选择勾选"Google USB drive"点击"apply"进行安装.(我的已经安装完成). 4.还是在这个界面,选择自己手机的Androi

  • Android Studio下无线调试的方法

    有的小伙伴会感觉在Android App真机调试中不断的插拔USB线比较麻烦而选择无线调试,因为公司App调试时外部插拔设备占用了USB口,无法进行有线调试而选择无线调试. 方法一:使用Android Studio插件 Android Studio是功能强大的,各种各样的插件让Android Studio能够处理各种情况. 1.adb wifi 点击Ctrl+Alt+S打开Android Studio的Setting,在搜索框输入adb wifi 选中adb wifi安装完成后重启Studio就

  • Android Studio实现音乐播放器的全过程(简单易上手)

    目录 前言 一.项目概述 1.需求分析 2.设计分析 3.资源文件分析 二.开发环境 三.准备工具 四.详细设计 1.搭建主界面布局 2.创建服务类 2.1.服务概述 2.2.服务的创建 2.3.服务的启动方式 2.4.服务的生命周期 3.搭建音乐播放界面布局 4.搭建音乐列表界面布局 5.搭建专辑界面布局 6.导入资源文件 五.项目效果 1.创建模拟器 2.运行演示 六.项目总结 附如何将图片剪成圆形 前言 我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一

  • 解决Android studio用真机调试时logcat一直输出日志问题

    当我们用android Studio真机调试时,一般会有很多系统日志不断输出,影响调试. 解决方法: 右上角 no filters 选成 only selected application 如图: 补充知识:Android Studio的代码没错,运行时logcat会出现红色语句解决方法 不断的运行调试某一个项目,点击之后logcat会出现想不到的红色语句,或者切换项目打开出现R文件报红. 解决方法: 点击Build----Clean Project 再次调试发现没有红色语句,Error没有语句

  • Android Studio 3.6安装全过程及AVD安装运行步骤详解

    1.安装JDK1.7以上版本,Android Studio集成开发环境 (1)安装并检查JDK1.8,如图1.1所示 图1.1 配置完成的验证 (2)开始安装Android Studio集成开发环境,安装允许以管理员模式运行,如图1.2所示 图1.2 安装界面 (3)安装位置为F:\Studio\ android-studio-ide-192.6200805-windows,进行安装,如图1.3所示 图1.3 安装位置 (4)Android Studio集成开发环境安装完成,如图1.4所示 图1

  • 简单实用的Android studio 调试技巧

    说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原来可以玩的这么牛.下面我分别一一做介绍. 条件断点(Conditional Breakpoints) 这个调试模式是我最喜欢的,简直不能再方便了,以前遇到在循环里面打断点,需要看某个条件下的值,我只能一遍遍点击,直到满足条件. 那么这个条件断点改怎么用呢,在你的断点上点击右键,就会弹出一个选择对话框,在里面的condition框里面填写上你所需要中断的

  • 详解Android Studio正式签名进行调试的实现步骤

    详解Android Studio正式签名进行调试的实现步骤 在Android Studio中,可以使用Gradle进行打包时自动签名.其实Android Studio默认会给调试应用加上Debug签名,但有时候调一些第三方SDK时,需要正式签名才能调起来,所以接下来分享一下使用Gradle自动签名的方法. 一.创建签名文件 打开AS,选择Build->Generate Signed APK,选择要打包的项目,点击Next,再点击Create new...创建签名文件 填写签名文件响应信息,如下所

  • 详解如何使用Android Studio 进行NDK开发和调试

    尽管Android Studio已经越来越流行了,但很多人还是习惯于Eclipse或源码环境下开发JNI应用.个人认为使用Android Studio作NDK开发是必然趋势,所以本文将简单介绍如何在Android Studio上实现NDK开发. 简介 JNI JNI 是Java Native Inteface的缩写,是Java中定义的一种用于连接Java和C/C++接口的一种实现方式. NDK NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的

随机推荐