2017-03-16 3 views
0

Je suis nouveau à android et je ne connais pas beaucoup de génie logiciel. Je veux savoir sur les choses à faire pour rendre plus difficile de décompiler une application. J'ai fait quelques recherches à ce sujet et j'ai rencontré ce débogueur JEB qui semble pouvoir surveiller certaines choses pendant que l'application fonctionne. Pourtant, je ne connais pas les avantages de l'utiliser car je ne comprends pas les points critiques d'une application Android qui est surveillée par JEB. par exemple:Besoin de quelques informations sur l'ingénierie inverse et décompiler (android app - jdk)

enter image description here

appearantly le côté droit montre les variables locales. qu'est-ce que x/xh signifie pour un int? ou pour la valeur de la chaîne "secretKey" est la valeur de la chaîne au sérieux? si c'est le cas, toutes les variables de mon code sont en danger !!! Je pense que peut-être l'une des tentatives est de faire beaucoup de fausses variables dans le code afin que les vrais ne puissent pas être vus facilement. Est-ce que ça fait du sens? Et y a-t-il d'autres fuites que je devrais essayer d'empêcher par exemple sur ce JEB? Est-ce que proguard a quelque chose à voir avec ça? Comme je l'ai dit, j'ai beaucoup appris sur soft-eng et je n'ai pas compris ce que fait proguard.

Et une autre chose que j'ai vu est . Comment le rendre plus mélangé pour un tel outil à gérer?

La dernière question, je code en Java et ne pense pas encore j'ai l'occasion de commencer le codage natif, mais pour l'avenir; J'ai vu des gens dire qu'il est plus sûr de coder nativement. Est-ce par lui-même? ou il y a plus de bibliothèques pour garder plus de sécurité? ou c'est à cause de la structure apk finale?

désolé si certains mots semblent stupides. merci d'avance

Répondre

0

Vous ne devriez pas essayer d'empêcher l'ingénierie inverse, car cela est en grande partie futile. Au lieu de cela, vous devez concevoir votre application pour minimiser l'effet que l'ingénierie inverse aurait (c'est-à-dire que vous ne devez pas inclure de données secrètes telles que des clés ou des mots de passe dans l'application). La quantité d'efforts que les gens sont prêts à consacrer à la rétro-ingénierie de votre application dépend de son importance et de sa popularité, tandis que l'obfuscation augmente les efforts nécessaires pour désosser l'application. Cependant, si votre application devient populaire, aucune obscurcissement n'arrêtera les gens, alors que si elle reste dans l'obscurité, personne ne prendra la peine de la regarder, même si vous publiez le code source sur Github. En outre, dans de rares cas, l'ajout d'obfuscation fera que les gens le fendront juste pour le défi. En dehors de cela, il y a le risque que l'obfuscation vous donne un faux sentiment de sécurité. N'importe qui peut concevoir un système qu'il ne peut pas briser lui-même, mais si vous n'êtes pas un expert en ingénierie inverse, les mesures que vous proposez ne sont pas susceptibles d'arrêter ceux qui le sont. Il est préférable de supposer que tout dans votre application est l'information publique et la conception en conséquence.

+0

Merci de partager vos informations. Si c'est le cas, alors l'utilisation de Mcrypt par exemple est inutile, car peu importe quelle iv ou quelle touche j'utilise pour cela; tout le monde pouvait les voir et refaire le Mcrypt. Et je ne vois pas un moyen de les garder en dehors de l'application. Le Mcrypt doit être fait dans l'application pour crypter/décrypter donc j'ai besoin de clés dans l'application – navid

0

Vous pouvez protéger votre code en utilisant quelques outils obfuscator puissant comme: Bg+Anti Decompile/Reverse Java Il a beaucoup d'options de protection:

  • Cacher valeur de chaîne (utile lorsque vous garder quelques informations sensibles dans la source java, ex: "Bonjour tout le monde" -> ߤª)
  • Occultation avec des caractères unicode
  • Cacher packagename
  • Ajouter fakecode pour piéger les outils decompiler
  • Vérifiez la chaîne de ressources (utile lorsque quelqu'un essaie de modifier les ressources de votre APK)
  • ....