美文网首页
Smalidea无源码调试android应用

Smalidea无源码调试android应用

作者: 刺客辣条 | 来源:发表于2016-09-09 21:06 被阅读0次

    1. 安装smalidea

    https://github.com/JesusFreke/smali/wiki/smalidea
    1.1. 进入IntelliJ IDEA/Android Studio开始安装插件,进入Settings->Plugins点击Install plugin from disk选中下载好的压缩包
    1.2. apply->restart Android Studio
    1.3. 该调试方法的原理
    采用 hook 方式达到开启所有应用调试的目的,xposed 插件代码如下

    public class Debug implements IXposedHookLoadPackage {
     
        public boolean debugApps = true ;
        public static final int DEBUG_ENABLE_DEBUGGER = 0x1;
        public String tag = "IDG";
     
        @Override
        public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
     
            if(lpparam.appInfo == null ||
                    (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) !=0){
                return;
            }
     
            tag = tag + lpparam.packageName;
     
            XposedBridge.hookAllMethods(Process.class, "start", new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
     
                    int id = 5;
                    int flags = (Integer) param.args[id];
     
                    Log.d(tag,"flags is : "+flags);
     
                    if (debugApps) {
                        if ((flags & DEBUG_ENABLE_DEBUGGER) == 0) {
                            flags |= DEBUG_ENABLE_DEBUGGER;
                        }
                    }
     
                    param.args[id] = flags;
                    Log.d(tag,"flags changed : "+flags);
     
                }
            });
        }
     
    }
    

    2. 安装调试工具

    2.1 安装Xposed框架

    2.1.1 XposedInstaller下载

    http://repo.xposed.info/module/de.robv.android.xposed.installer

    2.1.2 安装XInstaller

    • 在Xposed中下载XInstaller,安装并激活,重启系统以启用XInstaller。
    • 配置XInstaller,启动专家模式。「其他设置」->勾选「调试应用」

    3. 项目设置

    3.1. 生成smali文件

    java -jar baksmali-x.x.x.jar com.your.app.apk -o proj/yourapp/src

    3.2. Android Studio导入项目

    • 启动Android Studio->File->New->Import Project
    • 选择上面生成的路径,选定src的上层目录
    • 选择Create Project from existing sources
    • 选择Make Directory AS->Sources Root
    • File->Project Structure 选择对应的SDK版本
    • 配置调试选项
      Run->Edit Configurations
      +」 -> Remote -> Port:8700

    4. 开始调试

    4.1 方法一:使用DDMS进行调试

    真机

    1. 勾选USB调试
    2. 勾选USB调试通知
    3. 在开发者选项中->选择调试的应用->选择你要调试的程序->勾选等待调试器
    4. 启动程序,程序会停在等待调试器界面
      此时ddms可以看到进程的端口号8700

    Android Studio中对代码下好断点->Run->Debug->Remote即可开始调试
    Console控制台输出
    Connected to the target VM, address: 'localhost:8700', transport: 'socket'

    4.2 方法二:使用adb调试

    AndroidManifest.xml得到主Activity如下:
    com.your.app.MainActivity

    调试启动目标程序
    adb shell am start -D -W -n com.your.app/.MainActivity

    设置端口转发
    adb shell ps | grep your.app
    adb forward tcp:8700 jdwp:xxxxx

    寄存器

    Register | | Value
    --- |---
    v0 | | 第一个本地寄存器
    v1 | | 第二个本地寄存器
    v2 |p0 | this
    v3 | p1 | 第一个参数
    v4 | p2 | 第二个参数
    v5 | p3 | 第三个参数

    相关文章

      网友评论

          本文标题:Smalidea无源码调试android应用

          本文链接:https://www.haomeiwen.com/subject/buaeettx.html