查看: 90|回复: 0

Android开发androidstudio调试smali代码

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-8-8
发表于 2021-9-14 21:57:00 | 显示全部楼层 |阅读模式

Android开发androidstudio调试smali代码

  1. Android Studio安装smalidea插件,方便查看smali代码

    1)smalidea插件下载地址:https://bitbucket.org/JesusFreke/smalidea/downloads/

    2)smalidea github地址:https://github.com/JesusFreke/smalidea

    3)AS中【Android Studio-->Preferences-->Plugins-->Install plugin from desk...】,安装插件

  2. apktool反编译apk得到smali代码

    1)apktool下载和安装地址:https://ibotpeaches.github.io/Apktool/install/

    2)apktool d 反编译Apk名字.apk -o 输出目录 //反编译得到smali代码,如果反编译过程中出错但是有smali代码也不影响

  3. 单独新建一个Android项目,拷贝smali代码到src目录下

    1)File->new->New Project->一直Next然后Finish即可完成新项目创建。新建项目package最好和反编译的项目package一样。

    2)切换到project视图,删掉app/src下的所有代码,也就是保留src文件夹,让src文件夹为空

    3)复制上面反编译出来的所有smali目录以及代码和AndroidManifest.xml文件到src文件夹下

    4)这时肯定是没法直接运行的,我们点击Edit Configurations添加一个运行配置

  4. Edit Configurations添加Remote JVM Debug

    1)点击Edit Configurations

    2)点击+加号,添加一个Remote JVM Debug,name起个名字

    3)随便写一个未被占用的端口比如8700,Use model classpath下拉选择项目名称,最后点击Apply和OK即可

  5. attach进程,开始调试

    1)看了网上是通过 adb shell am start -D -n packageName/activityName 方式启动app

    然后通过 adb shell ps | grep packageName 找到app的进程pid,代码打上断点

    然后 adb forward tcp:8700 jdwp:<pid> ,最后在AS里面使用Run->Attach to Process附上进程开始调试的

    ​ 注意:这个8700和上面的Edit Configurations时写的端口一致,pid是进程pid通过adb shell ps 查看

    2)而我的方式是:正常手动打开一次app让进程出现先,然后直接Run->Attach to Process附上进程,

    然后代码打上断点,再关闭app,这时进程还活着,最后再次手动打开app就会停在断点处,开始调试。

  6. 需要修改手机的ro.debuggable=1才能attach到进程,而修改手机的ro属性手机需要root

    具体如何修改ro属性可以参考:https://www.cnblogs.com/yongfengnice/p/15268235.html

  7. 进入调试模式后就可以Android Studio的Variables观察属性值等待,和常规调试app方法一样

=================================================================================

1.window查看8700端口并杀死进程

netstat -ano | findstr 8700 //查看8700端口状态
taskkill /pid 8888 /f:杀掉占用8700端口的8888进程,这个进程通过上面一句找到

2.apk静态分析反编译工具GUI

jadx github地址:https://github.com/skylot/jadx

3.adb shell命令获取当前页面top activity

window环境:adb shell dumpsys activity | findstr "mFocused"
linux环境:adb shell dumpsys activity | grep "mFocused"



来源:https://www.cnblogs.com/yongfengnice/p/15269847.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部