• Android Studio动态调试smali代码


    工具:

    Android Studio版本: 3.0.1

    smalidea插件: https://github.com/JesusFreke/smali/wiki/smalidea

    反编译工具:本节先用Android Killer,后面介绍apktool。

    一 配置插件

      下载smalidea插件,然后打卡Android Studio,点击File->Setting->Plugins->Install plugin from disk,选择下载的smalidea.zip文件,安装成功后显示重启Android Studio生效。

    二 反编译apk

      把第一节编写的激活码程序apk拖入Android Killer中

      1 记录apk的包名(com.jhm)和入口Activity(com.jhm.MainActivity)

      2 设置该apk的调试属性,改成可调试:AndroidManifest.xml中application标签中设置android:debuggable="true"  (不改是不能调试apk的)  

    三 手机准备

      1 修改完调试属性后在Android Killer里,点击Android->编译,成功后生成apk,把这个可调试的apk安装到手机,手机连接电脑打开usb调试。

      2 命令行中输入adb shell am start -D -n com.jhm/com.jhm.MainActivity。 开启入口Activity。如图:

      

     四 转发端口  

      1 Android Studio中点击Tools->Android->Android Device Monitor,如图,监视器监听到了我们的程序com.jhm。

      

        看到,Online值是23635,端口值是8700,记录下,关闭Android Device Monitor。(不要关闭手机里的程序,重新打开后Online值会变的,需要重新转发端口)

      2 打开命令行,输入命令转发端口

        输入adb forward tcp:端口值 jdwp:Online值,即adb forward tcp:8700 jdwp:23635,结果如图:

        

        说明8700端口被占用了,查找对应的是哪个进程关掉就可以了。

        ①命令行输入netstat -ano | findstr "8700",回车

        ,被1220占用了

        ②查找1220对应的是哪个进程,命令行输入tasklist | findstr "1220",回车

        看到是studio64.exe,在任务管理器关闭即可。

      占用8700端口的进程关掉了,重新命令行输入adb forward tcp:8700 jdwp:23635,回车即可转发成功。

    五 导入smali工程

      1 AndroidKiller反编译完成后,点击工程管理器标签页->右击smali目录->打开方式->打开文件路径,在E盘新建Jhm文件夹,把smali文件夹拷贝到Jhm文件夹下,并且重命名smali文件夹为src。

      2 Android Studio中点击File->New->Import Project,找到E:Jhm路径,选中Jhm文件,点击Next一路到Finish。

      2 在AndroidStudio打开的新工程里选择浏览模式为Project格式,右击src->Make Directory As->Sources Root设置为根目录。

    六 配置远程调试选项

      在Android Studio中点击Run->Edit Configurations。点击左上角绿色加号->Remote,Name设置为DebugSmali吧,端口Port设置为8700,点击OK。

      

    七 配置JDK

      Android Studio中点击File->Project Structure,选中对应java版本,点击ok。

      

     八 开始调试

      1 找到MainActivity, 下几个断点。

      

      2 在Android Studio中点击Run->Debug ‘DebugSmali’,此时程序跑起来,如图:

      

      输入激活码,点击验证,程序断在我们的断点处,F8单步步过,F7单步步入,F9往下执行。OK可以动态调试了。

         

       

  • 相关阅读:
    TCP/IP 三次握手四次挥手
    光端机2m是什么意思,光端机E1与2M有什么区别?
    电视光端机故障维护与指示灯说明
    电视光端机常见故障问题介绍
    传输设备,光端机的应用及故障分析
    RS485数据光端机产品特点及技术参数介绍
    网管交换机与非网管交换机的优缺点介绍
    网管型交换机相比普通交换机有哪些明显优势?
    什么叫POE交换机?POE交换机使用方法详解!
    交换机用光纤模块互连一端灯不亮或两端都不亮,如何处理?
  • 原文地址:https://www.cnblogs.com/fengxing999/p/10007380.html
Copyright © 2020-2023  润新知