Question:
Obfusquer les exécutables Windows
mrduclaw
2013-03-23 14:34:53 UTC
view on stackexchange narkive permalink

GCC vous permet d'écrire des plugins d'optimisation qui peuvent être utilisés pour obscurcir votre exécutable compilé, mais cela n'a pas été porté sur mingw . LLVM permet quelque chose de similaire mais barfs lors de l'inclusion de Windows.h.

Existe-t-il un compilateur qui me permettra d'accéder à l'AST juste avant le moment de la liaison et de produire un exécutable Windows ?

Pourquoi avez-vous besoin de `windows.h` * dans le compilateur *?
Il y a eu beaucoup de travail pour faire sonner les fenêtres. Il y a quelques drapeaux que vous devriez peut-être passer (comme -fms-extensions). Je pense qu'à ce stade, l'équipe de clang annonce qu'ils travaillent sur windows.h, je sais que je l'ai déjà fait fonctionner ...
@IgorSkochinsky Veuillez pardonner mon ignorance, est-ce que c'était un problème chez Microsoft ou est-ce que je fais quelque chose de complètement faux?
@Andrew J'ai essayé de passer `-fms-extensions` auparavant, mais j'ai rencontré des problèmes. Cela fait quelques mois, peut-être que c'est réglé maintenant. Merci.
"Obfuscating" soulève une question: pour quoi faire? Que veux-tu accomplir?
@0xC0000022L Je suppose que "je voudrais atteindre un certain niveau d'obscurcissement" n'est pas suffisant? Dans mon esprit, cela est lié à la question de masquer les artefacts du compilateur afin de rendre la rétro-ingénierie plus difficile.
@mrduclaw: gotcha. Non, c'est parfaitement logique de cette façon. Cependant, je pense que les artefacts que vous devriez également traiter dans un tel cas incluent également les éléments qui sont liés au binaire. C'est à dire. pas seulement ce que vous compilez mais aussi ce que vous * liez * tel que `libgcc`.
@0xC0000022L D'accord, il y aurait encore des problèmes. Mais changer les prologues et les épilogues fonctionnels pourrait de toute façon être amusant.
Deux réponses:
Rolf Rolles
2013-04-03 14:02:34 UTC
view on stackexchange narkive permalink

Voici quelques éléments que vous voudrez peut-être examiner:

Pour clarifier un peu: le livre est très bon, mais il ne s'agit pas vraiment de savoir comment écrire (extensions) pour des compilateurs spécifiques. Il couvre plutôt les concepts sous-jacents des transformations de programmes afin d'appliquer des obfuscations aux programmes en général.
newgre
2013-04-03 13:26:16 UTC
view on stackexchange narkive permalink

Il y avait une infrastructure de compilateur nommée phoenix (voir aussi wikipedia). Je l'ai même utilisée pour certaines transformations de programme, mais malheureusement elle n'a jamais dépassé ce que MS appelle un "Aperçu de la technologie communautaire (CTP)". Maintenant, il semble mort, j'obtiens des 404 pour chacun des liens sur la page de recherche MS, il me semble donc que ce projet a été interrompu.

Si vous êtes intéressé à utiliser LLVM / CLANG sur Windows, vous voudrez peut-être jeter un œil à cette page, qui propose une extension pour utiliser LLVM à partir de VS. Je l'ai essayé brièvement et je ne peux pas en dire beaucoup à ce sujet, mais cela devrait vous permettre de compiler et de créer des extensions pour LLVM sous Windows.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...