高版本号Android Studio动态调试smali问题解决

在学习安卓逆向配置环境时,遇到了Android Studio无法动态调试smali代码的情况,本文旨在解决这一问题。(请注意,文章具有时效性,本文撰写于2021年末,随着版本的升级本文所提供的方法可能不再适用,请注意甄别。)

Android studio版本过高无法使用插件smalidea

以下是我的版本信息。

Android Studio Arctic Fox | 2020.3.1 Patch 3
Build #AI-203.7717.56.2031.7784292, built on October 1, 2021
Runtime version: 11.0.10+0-b96-7249189 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 12
Registry: external.system.auto.import.disabled=true
Non-Bundled Plugins: org.jf.smalidea

通过百度极大部分百度到的通过Android studio配置动态调试smaliea时,推荐smalidea的版本都在0.03-0.05之间。需要注意的是,目前本版本(或者更高版本)的Android studio(截至2021/12/14)对旧版本的smalidea已经不再适配,安装之后会进行报错:
Plugin error: Plugin is compatible with IntelliJ IDEA only because it doesn't define any explicit module dependencies

删除不断报错的低版本插件

先解决删除旧插件问题。新版本Android studio在导入smalidea并restart IDE后,会不断进行上述报错。在plugins中也无法找到薛定谔的smalidea插件包。这个时候可以打开我的电脑,按照如下路径:
C:\Users\你的用户名\AppData\Roaming\Google\AndroidStudio2020.3\plugins
这里我的是AndroidStudio2020.3,你的可能不太一样,自己进行修改即可。最终是打开它的“plugins”文件夹,找到“smalidea”这个文件夹,整个删除之后重启IDE即可。

安装适配新版本的smalidea插件

IDE自带Smali Support进行Smali解析,但是Smali Support不支持Smali断点调试。故我们使用Smaliidea,本版本的Android studio需要用smalidea-0.06插件。可以完美解决报错问题。
最新的smalidea0.06点击这里获取。如果链接炸了,请Github搜索smalidea寻找高版本smalidea解决。
之后通过一波离线插件的导入(File -> Settting -> Plugins ->小齿轮 -> Install Plugins from Disk,点击本地磁盘下载的安装包),然后进行一个IDE的重启,即可使得smalidea插件生效。
之后我们修改配置,使smalidea对*.smali文件进行断点调试。这一步由于IDE版本不同,文件显示也有一定差别。但是大题都是一样的。所以按照如下格式进行修改也没有什么大问题。
首先,点击File -> Settting ->Editor -> File Types找到两个Smali文件:

找到“File name patterns”里含有*.smali的文件(我这里是smali Files,你的可能两个都是smali),点击"-"进行删除。

在另一个samali的“File name patterns”中,点击“+”,输入*.smali并点击OK,至此,smalidea断点调试smali的配置已经基本完成。

Android studio动态调试smali

Android Studio中自带虚拟机,从Tools->AVD manager中创建新的虚拟机即可。具体过程自行百度。千万别用VMware创建Android,不仅响应超级慢没法联网还没法安装VM-Tools从传输文件
(这里极度建议用自带的虚拟机,还节省了root和connect的步骤)
这里蜀黍我插句嘴,android studio这个时候你一定配置好adb_path了对吧,一定配置好了对吧,一定配置好了对吧!没有赶快百度去配置!配置错误处理
导入需要调试的apk,依次点击 File -> Profile or Debug Apk,打开文件(速度又亿点慢,请耐心等待)
修改apk的Manifest application 属性
android:debuggable=“true”
可以用apktool解出Manifest 然后修改,接着重新打包回去。这里我使用andriodkiller修改签名打包一步到位。之后将app安装到手机。
选择Developer options->Select debug app,选中等待调试的软件,之后打开“Wait for debugger”的开关。我用的是Nexus5的系统,你用别的系统应该也是大差不差。点开后如下图所示。

返回需要调试的应用,打开。应该会显示“Wait for debugger”。这个时候,点开Android studio的调试按钮(一个长得像瓢虫的东西),弹出如下弹窗。

选择需要Debug的进程,点击OK。点击IDE的run按钮。这个时候估计就可以进行愉快的调试了。(图中的歌词麻烦无视一下,才不是什么歌曲推荐)

这个结果,我看彳亍。