Android Studio 3.6 调试 smali的全过程
简介
Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址),官方所说的基于Jasmin/dedexer语法,实际根不知道是什么鬼……
Smali支持注解、调试信息、行数信息等基本Java的基本特性,可以说是很接近Java编译在JVM上的中间语言了,一般用来做Android程序的逆向工程,还可以。。搞搞小名堂
个人认为Smali只是用于做反汇编的一种语言实现,如果可以,自己也能定义一套这样的语言,实现反汇编的效果
好了,下面看下正文。
以前在AndroidStudio中调试smali还是非常麻烦的时候,配置不好就是
ErrorrunningSmali:Unabletoopendebuggerport(localhost:8700):java.io.IOException"handshakefailed-connectionprematurallyclosed
目前最新版的AndroidStudio利用附加功能调试smali非常方便,操作步骤如下:
文中会用到工具及下载地址:
①、apktool.jar(目前最新版v2.4.1),用于反编译smali,
下载地址: https://ibotpeaches.github.io/Apktool/
②、AndroidStudio(目前最新版本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. 先配置好AndroidStudio开发环境,这步就略去2.AndroidStudio中安装smalidea插件,先从官网下载smalideazip包,然后在Android中依次选择:
File --> Setting 将会弹出设置对话框
然后在设置对话框依次选择: Plugins --> <设置图标> -->InstallPluginfromDisk...
在弹出选择对话框中,找到下载好的smalidea压缩包,选择ok即可
至此,插件安装就完成了,关闭AndroidStudio
3.用apktool反编译apk
使用命令: java.exe-jar apktool.jard-f
也可以直接使用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:adbshellamstart-D-npackage属性的值/android:name属性的值 )
4.将反编译工程导入到AndroidStudio
默认选择Createprojectfromexistingsources,一路next,最后点击Finish即可
用Project视图,在项目目录右键 -->MarkDirectoryas...-->Sourcesroot
5.展开smali目录选择刚才添加 waitForDebugger代码的smali文件下一行下断点
6.运行手机上安装的apk(apk会假死停在waitForDebugger代码处,等待调试器)。
7.在AndroidStudio选择附加
此时,已经Attach到进程中,可以快乐的调试了
总结
到此这篇关于AndroidStudio3.6调试smali的全过程的文章就介绍到这了,更多相关AndroidStudio3.6调试smali内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。