Question

C'est une sorte de question en deux parties. Mais cela concerne la même chose.

Je souhaite utiliser le code IL d'une application pour appliquer des correctifs. Je me demande quelle serait la bonne approche. Évidemment, je pourrais le décompiler, lire et éditer le fichier de code puis le recompiler. mais est-il possible de le lire en tant que code msil directement dans le fichier. et peut-être l'éditer en temps réel.

J'essayais de modifier le code décompilé d'un exécutable. mais à chaque fois que je le recompilerais, je rencontrais un problème d’exécution. Comme s'il ne pouvait plus trouver son point d'entrée. Comment puis-je calculer cela? Je devine que je dois connaître la longueur des commandes et de leurs paramètres, ou pour que le point d’entrée soit une étiquette ou quelque chose du genre. Je serais bien s'il y avait un modèle Visual Studio pour quelque chose comme ça.

Était-ce utile?

La solution

En tant que personne ayant déjà lu le ECMA-335 spec plusieurs fois et ont implémenté un chargeur d'images CLI dans deux langages différents (avec une analyse IL complète en un), je dirais que cela reste une tâche ardue pour moi. Je dis cela parce qu'il semble que les deux 1) vous n'avez pas fait cela et 2) vous cherchez une réponse facile. La spécification devrait certainement être votre point de départ.

La procédure minimale serait:

  • Chargez l'image PE (exe ou dll)
  • Analyser le code octet de toutes les méthodes et résoudre les symboles
  • Appliquez des transformations de code (bien sûr, il s'agirait d'une transformation unique, telle que le renommage de méthodes privées)
  • Enregistrez le résultat en tant que nouvelle image PE

Éditer: Cela ne vous empêchera pas d'avoir à connaître la structure détaillée des assemblys .NET, mais vous gagnerez peut-être un peu de temps dans la mise en œuvre réelle et vous aidera à maintenir la logique de votre obfuscateur bien séparée du chargeur.

Autres conseils

Pour lire le fichier MSIL, il y a bien sûr, dans ceci fil :

ildasm.exe - Intermédiaire Langue désassembleur. Vous pouvez afficher votre code compilé au niveau MSIL avec cet outil.

Cela se trouve dans le SDK Microsoft.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top