看到 【Xposed】抖音短视频检测 Xposed 分析
和 【Xposed】抖音短视频检测 Xposed 分析2
两个帖子,另外一种方式来去掉抖音检测Xposed提示。
工具
apk:抖音1.7.2
IDE:Android Studio 3.0
反编译工具:dex2jar-0.0.9.15 ,jd-gui-windows-1.4.0,jadx
根据上面两个博客,知道方法com.ss.android.ugc.aweme.app.b.a.i.a()
是发出toast的地方
public void a()
{
if (PatchProxy.isSupport(new Object[0], this, a, false, 4314, new Class[0], Void.TYPE)) {
PatchProxy.accessDispatch(new Object[0], this, a, false, 4314, new Class[0], Void.TYPE);
}
while (!com.ss.android.ugc.aweme.app.i.a(AwemeApplication.t())) {
return;
}
String str1 = AwemeApplication.t().getString(2131296798);
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = com.ss.android.ugc.aweme.app.i.b;
String str2 = String.format(str1, arrayOfObject);
n.a(AwemeApplication.t(), str2);
c.a("find_hook", com.ss.android.ugc.aweme.app.i.b, null);
}
那么,return之后的就是具体组织toast了,如果能够让while循环走入return,即com.ss.android.ugc.aweme.app.i.a(AwemeApplication.t()) == false
,就完成了。
现在重点看这个方法。
jadx反编译
public static boolean m26293a(Context context) {
if (PatchProxy.isSupport(new Object[]{context}, null, f19681a, true, 4443, new Class[]{Context.class}, Boolean.TYPE)) {
return ((Boolean) PatchProxy.accessDispatch(new Object[]{context}, null, f19681a, true, 4443, new Class[]{Context.class}, Boolean.TYPE)).booleanValue();
} else if (C6970i.m26295b(context) || C6970i.m26292a() || C6970i.m26294b()) {
return true;
} else {
return false;
}
}
public static boolean a(Context context)
这个方法,修改返回值。C6970i.m26295b(context)
C6970i.m26292a()
C6970i.m26294b()
的返回值。下面附上第一种修改方式:
public class Hook implements IXposedHookLoadPackage{
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable{
if(!lpparam.packageName.equals("com.ss.android.ugc.aweme")){
return;
}
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
ClassLoader classLoader = ((Context)param.args[0]).getClassLoader();
XposedHelpers.findAndHookMethod("com.ss.android.ugc.aweme.app.i", classLoader , "a", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
Log.i(TAG, "hookComSsAndroidUgcAwemeAppIA() --- after =" + param.getResult());
param.setResult(false);
}
});
}
});
}
}
说明
因为
com.ss.android.ugc.aweme.app.i.a(AwemeApplication.t())
这个方法在dex2中,所以要先调用方法XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {});
这样就可以了。