• 【Smali】Smali文件的动态调试


    1.简介

    smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。下载地址为:https://github.com/JesusFreke/smali/wiki/smalidea。Android Studio的安装,就是傻瓜式的安装,一路next下去。接下来笔者介绍一下笔者的软件环境:jdk 1.8,android studio 2.3,smalidea 0.0.5,测试的app是笔者写的一个demo.

    2.动态调试Smali需要的软件

    调试的过程中需要准备的软件有android studio、smalidea、baksmali。经过笔者的测试,发现不同版本的软件搭配,会得出许多问题。这里笔者测试出,在笔者的软件环境下情况正常,Android Studio动态调试AKP需要的软件集合

    3.动态调试smali

    3.1 生成Smali文件

    将需要编译的软件放到apktool目录下面。

    然后执行这个命令:

    java -jar baksmali-2.0.3.jar test.apk -o ./projects/test/src

    就可以得到projects这个文件夹。在执行上面这行代码时,可能会遇到“com.beust.jcommander.MissingCommandException: Expected a command”的异常信息。这时候可以运行

    java -jar baksmali-2.0.3.jar -?

    来查看帮助信息。通过报出的异常信息,和观察的帮助信息后,知道应该添加disassemble命令参数:

    java -jar baksmali-2.0.3.jar disassemble test.apk -o ./projects/test/src

    3.2 导入Smali文件

    打开visual studio软件,File -> New -> Import Project...

    然后选中上面解压出来的test文件夹

    接下来,我们就可以在project中看到自己的项目了

    3.3 安装Smalidea插件

    现在还没有smali插件,所以不会进行语法检查。

    File -> Settings...然后选中Plugins,选中Install plugin from disk... ,然后找到解压出来的smalidea 0.0.5.zip文件,点击确认重启,smalidea插件就安装成功了。

    这时候,笔者建议点开查看打开smali文件看看,如果在Log台中,出现错误信息,那么表明你的Smalidea版本不对,不能正常解析。

    3.4 设置远程监听

    点击 Run -> Edit Configurations...  然后点击+号,选择remote。

    然后再设置端口为8700

    3.5 查看DDMS

    在sdk tools中点击 monitor.bat ,就会看见DDMS,打开客户端的软件端口的信息就会出现,然后选中端口。

    3.6 开始调试

    在打好断点后,点击调试按钮。

    然后就会断点处出现调试界面,

  • 相关阅读:
    理解C#中的 async await
    kube-proxy IPVS 模式的工作原理
    Kilo 使用教程
    Wireguard 全互联模式(full mesh)配置指南
    我为什么不鼓吹 WireGuard
    iTerm2 实现 ssh 自动登录,并使用 Zmodem 实现快速传输文件
    在 Docker Desktop 中启用 K8s 服务
    ABP 适用性改造
    ABP 适用性改造
    在 ASP.NET Core 应用中使用 Cookie 进行身份认证
  • 原文地址:https://www.cnblogs.com/HDK2016/p/8016129.html
Copyright © 2020-2023  润新知