Xposed去除抖音Toast教程

ppjunSpirit發表於2018-02-01

特別感謝www.52pojie.cn/thread-6847…

官方教程:github.com/rovo89/Xpos…

安裝了xposed後你的手機就可以自動搶微信,qq紅包了,還有可以搜尋最近很多的答題app答案。

下面以抖音去Toast為例子,教你如何製作一個xposed外掛。

首先安裝了xposed框架後,抖音會在framework檢測到XposedBridge.jar檔案,就會提示檢測到Xposed,要求刪除xposed install。

思路是通過jadx開啟抖音1.7.2版本。在resource-resource.arsc-res-values-strings.xml.查詢到

    <string name="a_9">檢測到你使用%s,請解除安裝後重試</string>
複製程式碼

再次全域性搜尋a_9在哪裡被引用 找到package com.ss.android.ugc.aweme.app.b.a的g類,我們要做就是替換到裡面的a方法。

在AndroidManifest.xml,新增是否為xposed專案,xposed描述,最小的xposed版本

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ppjun.android.xposedbytedance">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="@string/app_desc" />
        <meta-data
            android:name="xposedminversion"
            android:value="53" />
    </application>

</manifest>
複製程式碼

首先在app/build.gradle

    provided 'de.robv.android.xposed:api:82'
    provided 'de.robv.android.xposed:api:82:sources'
複製程式碼

然後建立類HookLogic,實現IXposedHookLoadPackage介面,實現它的handleLoadPackage方法。

    if (lpparam.packageName.equals(DOUYIN_PAKCAGENAME)) {
            /**
             * 相容douyi不同版本之間,方法名不同
             */
            findAndHookMethod(HOOK_METHOD_I, lpparam.classLoader, TARGET_METHOD, XC_MethodReplacement.returnConstant(null));
            findAndHookMethod(HOOK_METHOD_G, lpparam.classLoader, TARGET_METHOD, XC_MethodReplacement.returnConstant(null));

        }
複製程式碼

因為xposed原理是替換了android的zygote程式,需要重啟才能替換。 這裡使用github.com/shuihuadx/X… 能讓你的手機不重啟就可以讓xposed程式碼生效。

需要在建立HookLoader類。 最後為了讓xposed知道外掛的入口,要在assets資料夾下建立xposed_init指向你的HookLoader,規則是包名+類名(com.ppjun.android.xposedbytedance.HookLoader) 然後就可以安裝在你的手機上。

注意as預設開啟instant run,多次修改程式碼後,xposed install日誌會顯示ClassNotFindException的,這個xposed的issue有提到。 第一次安裝,要重啟手機才能讓HookLoader程式碼生效。

專案地址github.com/gdmec071207… 最後釋出外掛的時候需要改為com.ppjun.android.xposedbytedance.HookLogic 減少效能消耗

相關文章