我尝试在我新植入的Xposed智能手机上安装Snapchat.但是,当Snapchat检测到Xposed Framework时,登录是不可能的.
我“理解”这种限制的原因,尽管我认为它有点太多,因为我没有使用Xposed for Snapchat.
我“理解”这种限制的原因,尽管我认为它有点太多,因为我没有使用Xposed for Snapchat.
但我的问题是:他们如何检测框架?
解决方法
SnapChat使用Google的
SafetyNet Attestation API并没有专门检查是否安装了
XPosed. SnapChat在第一次启动应用程序时运行SafetyNet.
为了确保SnapChat没有专门检查XPosed框架,我反编译Snapchat并运行grep -lri xposed.搜索结果没有结果.
检查是否安装了XPosed:
我敢肯定有很多方法可以检查是否安装了Xposed.我编写了以下方法获取当前安装的Xposed版本,如果在设备上找不到XposedBridge.jar,则返回null:
/** * Get the current Xposed version installed on the device. * * @param context The application context * @return The Xposed version or {@code null} if Xposed isn't installed. */ public static Integer getXposedVersion(Context context) { try { File xposedBridge = new File("/system/framework/XposedBridge.jar"); if (xposedBridge.exists()) { File optimizedDir = context.getDir("dex",Context.MODE_PRIVATE); DexClassLoader dexClassLoader = new DexClassLoader(xposedBridge.getPath(),optimizedDir.getPath(),null,ClassLoader.getSystemClassLoader()); Class<?> XposedBridge = dexClassLoader.loadClass("de.robv.android.xposed.XposedBridge"); Method getXposedVersion = XposedBridge.getDeclaredMethod("getXposedVersion"); if (!getXposedVersion.isAccessible()) getXposedVersion.setAccessible(true); return (Integer) getXposedVersion.invoke(null); } } catch (Exception ignored) { } return null; }
据我所知,Xposed总是在/ system / framework中有XposedBridge.jar,所以这应该适用于Xposed的官方版本,但在将来的版本中可能会中断.