Sans recomstackr l’application, l’utilisateur peut faire déboguer l’application en utilisant xposed pour déboguer / comstackr l’application
Existe-t-il une méthode (root ou non) pour détecter l’application actuellement:
ou
ou
Utiliser
BuildConfig.DEBUG
etApplicationInfo
et vérifier le champ des drapeaux pourFLAG_DEBUGGABLE
ne fonctionne pas depuis que l’application lancée par zygote avec indicateur de débogage directement
Voici le code qui accroche la classe de processus
try { Method start = Process.class.getMethod( "start", Ssortingng.class, Ssortingng.class, Integer.TYPE, Integer.TYPE, int[].class, Integer.TYPE, Integer.TYPE, Integer.TYPE, Ssortingng.class, Ssortingng[].class); XposedBridge.log("start hook, appInfo: " + loadPackageParam.appInfo); XposedBridge.hookMethod(start, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam methodHookParam) throws Throwable { int id = 5; int flags = (Integer) methodHookParam.args[id]; if ((flags & 0x1) == 0) { flags |= 0x1; } methodHookParam.args[id] = flags; } } }); } catch (NoSuchMethodException e) { e.printStackTrace(); }
boolean isConnected = new Debug (). isDebuggerConnected ();
Déterminez si un débogueur est actuellement connecté. Documentation de la classe Debug
Afaik il n’est pas possible de récupérer cette information sans root.
Cependant, vous pouvez vérifier si un débogueur est connecté. Voir Debug.isDebuggerConnected()
Au lieu de compter sur BuildConfig.DEBUG
et sur ApplicationInfo
qui ne sont plus fiables à cause du module exposé. Vous pouvez créer une constante globale dans votre code.
public class DebugMode{ public static final boolean ENABLED = true; }
Dans votre version de version, vous définissez ce paramètre sur true et dans votre version de débogage sur false. Vous pouvez également utiliser différents jeux de sources pour buildflavours . Vous n’avez donc pas à les modifier manuellement.
Si DebugMode.ENABLED
est true, vous savez que votre application est en mode Debug, sinon elle est en mode release. Si DebugMode.ENABLED
est false et que BuildConfig.DEBUG
true, vous savez que quelqu’un manipule l’indicateur de débogage. Si vous le savez, vous pouvez fermer votre application ou prendre d’autres mesures pour empêcher un vidage du tas.
Sur un appareil sur lequel Xposed est installé, vous ne pouvez rien empêcher ou utiliser des données traitées par votre application dans le code Java / dex. Tout peut être modifié par Xposed.
Par conséquent, le seul moyen consiste à renforcer votre application en ajoutant du code natif qui empêche l’exécution sur les périphériques sur lesquels Xposed est installé. De bons frameworks de durcissement rendent également très difficile / presque impossible la connexion de débogueurs.