smalidea

smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。

github地址:https://github.com/JesusFreke/smali/wiki/smalidea

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

动态调试安卓app

smalidea支持14.1或以上版本的IDEA。Android Studio如果是基于14.1或以上版本的IDEA也是支持的,我这里用的是2.0版本的Android Studio,IDEA的操作也差不多。

从上面的地址下载这3个文件。

安装smalidea

1.打开Android Studio,按Alt+Ctrl+S打开设置界面,点击Plugins——Install plugin from disk…——选择下载好的smalidea-0.03.zip。
2.重启Android Studio。

baksmali

使用baksmali反编译apk得到smali代码。

使用下面命令得到apk的smali代码,在./projects/myapp/src目录下
java -jar baksmali-2.1.2.jar myapp.apk -o ./projects/myapp/src

创建新的工程并导入smali

1.Project from Existing Sources…

选择工程目录

接着一路Next…

2.工程创建成功后,在src目录上右键并选择”Mark Directory As——Sources Root”。

开始调试app

1.打开DDMS
工程创建成功后,发现Android Device Monitor按钮不能点击,因为这不是一个完整的安卓工程,不过可以到Android SDK/tools目录下点击monitor.bat打开DDMS。

2.Run/Debug Configurations
创建一个”Remote” debug configuration (Run->Edit Configurations), 设置Port为8700。

3.在smali代码中你需要的地方打上断点。

4.运行应用,并在DDMS中选中该应用的进程。

5.点击Debug按钮,开始调试。当运行到断点时应用就会被暂停,这时就可以像平时调试应用一样操作了。

说明:在smali中所有的局部变量用v开头,方法的顶部.locals n表示这个方法使用n个局部变量。所有的参数用p开头,局部变量和参数都是从0开始编号。对于非静态方法来说,p0就是对象本身的引用,即this指针。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android之menu相关
  3. WebView播放html5视频和全屏。
  4. Android官方架构组件ViewModel+LiveData+DataBinding架构属于自
  5. Android(安卓)8.1 来电默认全屏显示 如何修改
  6. Android开发笔记: Project "XXX" is missing required source fo
  7. Android两行代码修改给系统状态栏设置透明效果
  8. 新装Android(安卓)studio无法联网,总是报错Could not get resourc
  9. Android箭头图标移动动画实现

随机推荐

  1. android教程资源 免费android深入浅出课
  2. android小游戏 猜拳游戏设计
  3. Android(安卓)汉字转拼音
  4. android Alertdialog.Bulider简单使用
  5. Android(安卓)在 xml中定义图片
  6. Android(安卓)Webkit 解读 WebKit – Web
  7. android 实现静默安装、卸载
  8. linux eclipse中运行android AVD 错误
  9. Android(安卓)3.0 r1 API中文文档(108)
  10. android简单的乘法运算