1

J'essaye de faire de l'ingénierie inverse un fichier .jar (essentiellement un groupe de .class fichiers). Cependant, il y a deux difficultés:Java deobfuscator supportant le changement de nom de variable?

  1. Certaines des variables, les méthodes et les classes sont nommées avec caractères unicode, qui ne peut pas être correctement affichés. Cela rend la modification de la source très incommode.

  2. Certaines classes portent le nom Mots-clés Java (tels que if). Par conséquent, le compilateur Java se plaindra lors de la recompilation des fichiers source créés par reverse engineering.

Existe-t-il des désobfuscateurs Java qui peuvent surmonter ces difficultés?

+0

L'état des décompilateurs dans Java est une triste histoire. Je suppose que nous demandons des décompilateurs qui essayent même de briser les obfuscateurs en plus de ça ... bonne chance avec ça. D'ailleurs: votre question est clairement hors sujet. Vous demandez des recommandations pour les ressources hors site. – GhostCat

+0

@GhostCat Je ne demande pas de décompilateurs. Je cherche un moyen de changer les noms de variables dans les fichiers JAR. Un désobfuscateur Java prenant en charge le changement de nom de variable est évidemment le meilleur moyen de résoudre ce problème. Si un décompilateur a cette fonctionnalité, c'est aussi une solution mais pas la question elle-même. En passant, toutes les questions sont des questions de recommandation. Je cherche une réponse pour résoudre mon problème mais pas de comparaison entre les outils. Cela ne semble pas très subjectif, non? – Cyker

+0

as-tu essayé jd-gui? –

Répondre

3

Plusieurs outils peuvent renommer les identifiants Java. Par exemple, vous pouvez simplement exécuter Proguard pour tout renommer.

Cela étant dit, je suggère de reconsidérer votre approche. La compilation et la décompilation Java sont toutes deux des processus avec perte. La décompilation est utile pour l'ingénierie inverse, mais vous ne pouvez généralement pas espérer pouvoir recompiler le code décompilé. Si cela a déjà été obscurci, vous pouvez tout aussi bien l'oublier.

La meilleure façon de modifier le code obfusqué est d'utiliser Krakatau assembler and disassembler. L'assemblage de Krakatau peut être transformé de manière réversible en bytecode, ce qui signifie que vous pouvez éditer des classes arbitraires sans gâcher les choses, peu importe comment elles ont été obscurcies. Le seul inconvénient est que vous devez vous familiariser avec le bytecode Java.

+0

Cette réponse semble bonne. En fait, je viens de travailler sur une configuration Proguard qui fonctionne avec mon application. Le résultat semble beaucoup plus agréable, même s'il existe encore des variables publiques dont les noms doivent rester intacts. Merci aussi de signaler Krakatau. En fait je travaille sur Android et il y a des smali/baksmali qui ressemblent à ça. Je continuerais à travailler pour voir si les choses finiront par s'arranger. – Cyker

0

Le Enigma de Cuchaz prend en charge le changement de nom des variables locales. Il n'est plus mis à jour et fonctionne sur BCEL qui n'est plus mis à jour. Tant que vous ne décompilerez pas quoi que ce soit que BCEL ne puisse pas gérer, cela devrait fonctionner correctement.