1. 程式人生 > >Xposed Hook & Anti-hook

Xposed Hook & Anti-hook

try amp als RoCE elements red source code odi

一點簡單記錄。

xposed原理包括將hook的method轉為Native。因此可檢測如下:

for (ApplicationInfo applicationInfo : applicationInfoList) {
    if (applicationInfo.processName.equals("com.example.hookdetection")) {        
        Set classes = new HashSet();
        DexFile dex;
        try {
            dex = new DexFile(applicationInfo.sourceDir);
            Enumeration entries 
= dex.entries(); while(entries.hasMoreElements()) { String entry = entries.nextElement(); classes.add(entry); } dex.close(); } catch (IOException e) { Log.e("HookDetection", e.toString()); }
for(String className : classes) { if(className.startsWith("com.example.hookdetection")) { try { Class clazz = HookDetection.class.forName(className); for(Method method : clazz.getDeclaredMethods()) { if(Modifier.isNative(method.getModifiers())){ Log.wtf(
"HookDetection", "Native function found (could be hooked by Substrate or Xposed): "
+ clazz.getCanonicalName() + "->" + method.getName()); } } } catch(ClassNotFoundException e) { Log.wtf("HookDetection", e.toString()); } } } } }

所有xposed插件中,Hook isNative. 由於Hook在先,調用在後,可繞過。

Xposed Hook & Anti-hook