使用Xposed Installer實現Android Hook

來源:互聯網
上載者:User

標籤:

使用Xposed Installer來實現Android hook,文章參考官方教程,有修改。

1、安裝Xposed Installer架構apk到手機,手機必須root;

2、代碼編寫;

在manifest檔案中聲明:

<application  android:allowBackup="true"  android:icon="@drawable/ic_launcher"  android:label="@string/app_name"  android:theme="@style/AppTheme" >  <meta-data    android:name="xposedmodule"    android:value="true" />  <meta-data    android:name="xposeddescription"    android:value="Easy example which changes the color of all app" />  <meta-data    android:name="xposedminversion"    android:value="30" /></application>

添加xposed庫檔案到libs目下;建立Main.java類,代碼如下:

public class Main implements IXposedHookLoadPackage,IXposedHookZygoteInit{    @Override    public void initZygote(StartupParam startupParam) throws Throwable {        hookResColor();    }    void hookResColor(){        XposedHelpers.findAndHookMethod(Resources.class,                "getColor", Integer.TYPE,                new XC_MethodReplacement() {                                        @Override                    protected Object replaceHookedMethod(MethodHookParam param)                            throws Throwable {                        Object color = XposedBridge.invokeOriginalMethod(param.method, param.thisObject, param.args);                        if (color instanceof Integer) {                            Integer new_name = (Integer) color;                            return new_name & ~0x0000ff00 | 0x00ff0000;                        }                        return null ;                    }                });    }        @Override    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {        hookClock(lpparam);    }    void hookClock(LoadPackageParam lpparam){        if (!lpparam.packageName.equals("com.android.systemui"))            return;        XposedHelpers.findAndHookMethod(                "com.android.systemui.statusbar.policy.Clock",                lpparam.classLoader, "updateClock", new XC_MethodHook() {                    @Override                    protected void afterHookedMethod(MethodHookParam param)                            throws Throwable {                        System.out.println("replaceHookedMethod---updateClock");                        XposedBridge.log("replaceHookedMethod---updateClock-->>");                        TextView tv = (TextView) param.thisObject;                        String text = tv.getText().toString();                        tv.setText(text + " :)-->");                        tv.setTextColor(Color.RED);                    }                });    }

添加名稱為xposed_init的檔案到assets目錄下,檔案內容為“com.app.xposed.example.Main”,就是上面Main類的完整包名。

右鍵工程選擇properties,在Java Build Path裡去掉勾選的選項(這裡有點坑,必須去掉勾選,不然運行之後沒效果,不知道是不是和開發環境有關),

運行工程,效果如下:

這麼看來Xposed也和Cydia Substrate一樣,需要依賴於Java反射,如果做了代碼混淆或者加密之後,此架構還有用嗎?

使用Xposed Installer實現Android Hook

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.