Question:
Ollydbg 2: Rupture après connexion à un processus suspendu
j0ker
2014-06-13 22:10:27 UTC
view on stackexchange narkive permalink

Lors de l'analyse de logiciels malveillants, je rencontre des packers qui injectent le code malveillant réel dans un processus nouvellement créé et l'exécutent de cette façon. Pour cela, ils créent un processus en état suspendu, injectent le code et le reprennent en utilisant ntdll.NtResumeThread sous Windows.

Je voudrais m'attacher au processus suspendu après l'injection est fait, pour vider la mémoire et obtenir le binaire décompressé. Pour cela, je m'arrête à ntdll.NtResumeThread . En utilisant Olly 2, je peux m'attacher au processus suspendu.

Mon problème est maintenant que cela semble reprendre le processus. Ce serait bien s'il se cassait au point d'entrée. Mais ce n'est pas le cas. Olly ne rompt pas tant que le processus auquel je me suis attaché n'est pas terminé. Oui, je peux alors vider la mémoire. Mais seulement s'il n'a pas été modifié par le malware. De plus, je ne veux pas du tout que le code du malware s'exécute pendant le déballage.

Alors, y a-t-il un moyen de faire casser Olly (de manière fiable) au point d'entrée du nouveau processus?

Merci d'avance!

Utilisez un débogueur de noyau. Je pense que ce que vous rencontrez est également une limitation de l'API de débogage officielle, bien que je ne puisse pas dire si OllyDbg utilise cette méthode ou sa propre méthode homebrew.
J'essaierai ceci dès que je serai en mesure de tester WinDbg :)
@j0ker Voici un lien que j'ai écrit il y a quelque temps pour casser sur le point d'entrée du processus évidé / enfant dans Ollydbg. Cela devrait aider. http://hooked-on-mnemonics.blogspot.com/2013/01/debugging-hollow-processes.html
Un répondre:
Jason Geffner
2014-06-13 22:23:01 UTC
view on stackexchange narkive permalink

Pour info, la méthode d'injection à laquelle vous faites référence s'appelle dynamic forking ou process hollowing .

Lorsque vous vous attachez au processus enfant avec OllyDbg, OllyDbg créera un nouveau thread pour lui-même, mais le thread principal (celui qui aurait été repris avec NtResumeThread () du parent) sera toujours suspendu. Une fois que vous vous êtes attaché avec OllyDbg, vous pouvez définir un point d'arrêt sur l'OEP et reprendre le thread suspendu; cela provoquera la rupture d'OllyDbg au niveau de l'OEP.

Tu as raison. Il ne m'est même pas venu à l'esprit de chercher d'autres fils. Merci!


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...