AndroidStudio调试smali代码
来源:互联网 发布:zte中兴网络机顶盒密码 编辑:程序博客网 时间:2024/05/01 06:47
最近看了一篇关于动态调试smali代码的文章:http://blog.csdn.net/superxlcr/article/details/78296673
由于文章是使用Eclipse调试smali代码的,因此上网找了下使用AndroidStudio调试smali代码的相关资料
下载AS插件
首先由于AndroidStudio是不支持smali的,因此我们需要下载相关插件来语法高亮以及设置断点
我们可以下载smalidea插件来安装:https://bitbucket.org/JesusFreke/smali/downloads/
安装完后,smali语法会高亮显示,并且可以设置断点了
反编译apk文件
利用apktool工具反编译apk,下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/
设置AndroidManifest中的debuggable属性为true,并重新打包签名
为了让我们的apk可以用于调试,我们需要修改AndroidManifest中的debuggable属性为true:
接着我们可以通过AndroidManifest找到程序的入口Activity(通过android.intent.action.MAIN,android.intent.category.LAUNCHER等属性)
找到程序入口后,我们有两种方法用于调试:
- 在入口Activity中加入:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
这个是smali语法,对应的Java代码为:android.os.Debug.waitForDebugger();
- 或者在启动Activity时使用am指令,带上-D参数用于调试:
adb shell am start -D -n package/MainActivity
接着使用apktool重新打包,并使用jarsigner签名
安装apk,开启调试模式,使用AS进行远程attach调试
安装完apk后,如果加入了waitForDebugger方法,则直接启动app
若是没有加入,则使用am的debug模式启动app
启动完后,打开ddms,查看应用的debug端口号:
如上图所示,红色小蜘蛛代表应用等待调试,其中应用进程号为10747,debug端口号为8620或者8700(一般用前面那个)
然后我们打开AS,导入我们的反编译工程后,在相应的smali代码中打上断点:
上图为在MainActivity的onCreate方法中加入断点
然后,打开AS的Run -> Edit Configurations,新建remote类型:
选择attach模式,输入相应的端口号即可:
调试成功:
阅读全文
0 0
- AndroidStudio调试smali代码
- androidstudio动态调试smali
- AndroidStudio+ideasmali动态调试smali汇编
- AndroidStudio+ideasmali动态调试smali汇编
- smali代码插入和调试
- Android Studio调试smali代码
- 使用IDEA动态调试smali代码
- Androidstudio切换java与C++代码调试
- Eclipse 调试 smali
- apktool + eclipse 调试smali
- eclipse动态调试smali
- apk反编译smali调试
- Android Studio 调试 smali
- Smali代码注入
- android smali代码分析
- Smali代码注入
- smali代码相关
- 使用Smali代码注入
- select用法
- 【bzoj3170】[Tjoi 2013]松鼠聚会
- 停课总结(三)
- codeforces——875B —— Sorting the Coins
- 分治算法-球队循环赛日程安排-java实现
- AndroidStudio调试smali代码
- mergeTwoSortList
- 堆栈模拟队列
- printListReverse
- opencv2.4.7.2画圆,画十字,画矩形
- elasticsearch 集群
- 好久没来了啊,都改版了
- EA&UML日拱一卒-状态图::延缓(处理)事件
- 第一行代码-Fragment碎片