<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/7181

                    smalidea是一款 IntelliJ IDEA/Android Studio的 smali 插件

                    已有功能


                    安裝


                    開啟應用調試


                    要調試一個apk里面的dex代碼,必須滿足以下兩個條件中的任何一個:

                    可選方案:

                    個人覺得改 boot.img和二次打包比較麻煩,所以這里采用 hook 方式達到開啟所有應用調試的目的,xposed 插件代碼如下

                    #!java
                    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);
                    
                                }
                            });
                        }
                    
                    }
                    

                    效果如下圖

                    如果遇到如下錯誤

                    Adb rejected connection to client
                    

                    可以使用重啟 adb server 來解決

                    adb kill-server
                    
                    adb start-server
                    

                    如果調試中遇到如下錯誤,確保關閉了其他 IDE 或者 DDMS,解除端口占用

                    調試應用


                    注意:IDEA 14.1及以上版本才支持單步調試

                    reference


                    http://www.kanxue.com/bbs/showthread.php?p=1338639

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

                    https://github.com/pylerSM/XInstaller

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频