Soucis DLL .net reflexil

Vous avez un problème pour cracker ou vous souhaitez parler de reversing en général...

Soucis DLL .net reflexil

Messagepar miky55 » 26 Juin 2013, 22:48

Bonjour tout le monde! Je suis nouveau dans ce forum et dans le reversing en général.

J'ai modifie une DLL non obfusquée a l'aide de reflector + reflexil (modif tres simple une ip codée en dur dans un string).
La dll en question fait parti d'un addin MS office et est distribuée à l'origine via une installation MSI.

Lorsque je remplace la dll fraîchement modifiée, l'addin ne fonctionne plus, pire encore si je restaure l'ancienne version ça ne fonctionne pas non plus. Pour revenir à l'ancienne version je dois donc désinstaller et réinstaller avec le package msi.

Je suppose donc que mon problème ne viens pas de la dll modifiée, mais plutôt de l'enregistrement de la dll dans le registre, ou je ne sais trop...

J'ai debugger le MSI avec un outil (QWERTY.Msi) et j'ai trouvé des choses du genre, après la copie des fichiers: Key: \Software\Classes\CLSID\{C0128B......}\InprocServer32
également des PublicKeyToken=051hk...

Ah oui, j'ai aussi eu un message en enregistrant mon fichier avec reflexil qui me disait que le fichier original étant fichier, mon nouveau fichier serai "delay signed".

Merci de m'éclairer, que dois-je faire, re-signer la dll? l'enregistrer dans le registre? Je n'ai pas la moindre idée comment faire cela, sachant que dans l'idéal j'aimerai repackagé le msi avec ma nouvelle dll.
miky55
 
Messages: 8
Inscription: 11 Juin 2013, 19:42

Re: Soucis DLL .net reflexil

Messagepar etherlord » 27 Juin 2013, 06:43

Delay signed signifie que ta DLL n'a été signée qu'avec la clé publique, pas avec la clé privée.

Et c'est fort probablement pour ça que ton package ne fonctionne pas.

hxxp://ryanfarley.com/blog/archive/2010 ... iling.aspx

etherlord
etherlord
Triumvirat
Triumvirat
 
Messages: 2549
Inscription: 22 Mars 2004, 16:12

Re: Soucis DLL .net reflexil

Messagepar Martinooooo » 27 Juin 2013, 09:23

Debug WinDBG + SOS => au crash, lister les exceptions.
Acme::Don't
Acme::Bleach
Acme::Pony
Lingua::Romana::Perligata
The Lingua::Romana::Perligata makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)
Avatar de l’utilisateur
Martinooooo
Maître des ténèbres
Maître des ténèbres
 
Messages: 577
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: Soucis DLL .net reflexil

Messagepar miky55 » 27 Juin 2013, 12:11

Merci pour vos retours,

Martinooooo a écrit:Debug WinDBG + SOS => au crash, lister les exceptions.



J'ai lancé windbg avec la dll originale puis avec la dll modifiée.
Dans le second cas, la dll ne se charge pas. La ou j'attendai un "ModLoad 037f000 cheminDeMa.dll", j'obtiens "(c74.93c): C++ EH exception - code e06d7363 (first chance)"

Que dois-je faire pour obtenir plus d'informations sur l'exception?

Merci d'avance,
Miky55
miky55
 
Messages: 8
Inscription: 11 Juin 2013, 19:42

Re: Soucis DLL .net reflexil

Messagepar Martinooooo » 27 Juin 2013, 12:56

Code: Tout sélectionner
.loadby sos clr
ou
Code: Tout sélectionner
.loadby sos mscorwks
selon la version du .NET Framework
puis
Code: Tout sélectionner
.foreach (ex {!dumpheap -type Exception -short}){.echo "********************************";!pe ${ex} }

(pompé sur http://blogs.msdn.com/b/tess/archive/20 ... -heap.aspx mais ça rocks !)
Acme::Don't
Acme::Bleach
Acme::Pony
Lingua::Romana::Perligata
The Lingua::Romana::Perligata makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)
Avatar de l’utilisateur
Martinooooo
Maître des ténèbres
Maître des ténèbres
 
Messages: 577
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: Soucis DLL .net reflexil

Messagepar miky55 » 27 Juin 2013, 14:05

Merci, voila le rapport généré, ça n'a pas l'air très parlant...
Pour obtenir ceci j'ai fait F5 + break une fois les exceptions affichées à l'écran, puis les 2 commandes.

Ce qui est sur c'est que la dll ne se charge pas du tout, aussi si je relance un nouveau debug, la dll ne se charge toujours pas mais les exceptions n'ont pas lieu non plus. En gros je pense qu'il se met en place une sorte de protection qui dit: cette dll n'est pas bonne ne charge plus l'addin au démarrage...


Code: Tout sélectionner
0:020> .loadby sos mscorwks
0:020> .foreach (ex {!dumpheap -type Exception -short}){.echo  "************************************";!pe ${ex} }
************************************
Invalid exception object *********************************************************************
************************************
Invalid exception object *
************************************
Invalid exception object Symbols
************************************
Invalid exception object can
************************************
Invalid exception object not
************************************
Invalid object
The current thread is unmanaged
************************************
Invalid exception object loaded
************************************
Invalid exception object because
************************************
Invalid exception object symbol
************************************
Invalid exception object path
************************************
Invalid exception object is
************************************
Invalid exception object not
************************************
Invalid exception object initialized.
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object The
************************************
Invalid exception object Symbol
************************************
Invalid exception object Path
************************************
Invalid exception object can
************************************
Invalid object
The current thread is unmanaged
************************************
Invalid exception object set
************************************
Invalid exception object by:
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object using
************************************
Invalid exception object the
************************************
Invalid exception object _NT_SYMBOL_PATH
************************************
Invalid exception object environment
************************************
Invalid exception object variable.
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object using
************************************
Invalid exception object the
************************************
Unknown option: -y
************************************
Invalid exception object <symbol_path>
************************************
Invalid exception object argument
************************************
Invalid exception object when
************************************
Invalid exception object starting
************************************
Invalid exception object the
************************************
Invalid exception object debugger.
************************************
Invalid exception object *
************************************
Invalid exception object *
************************************
Invalid exception object using
************************************
Invalid object
The current thread is unmanaged
************************************
Invalid exception object and
************************************
Invalid object
The current thread is unmanaged
************************************
Invalid exception object *
************************************
Invalid exception object *********************************************************************
************************************
Invalid exception object PDB
************************************
Invalid exception object symbol
************************************
Invalid exception object for
************************************
Invalid object
The current thread is unmanaged
************************************
Invalid exception object not
************************************
Invalid exception object loaded
************************************
Exception object: 05ba1024
Exception type: System.OutOfMemoryException
Message: <none>
InnerException: <none>
StackTrace (generated):
<none>
StackTraceString: <none>
HResult: 8007000e
The current thread is unmanaged
************************************
Exception object: 05ba106c
Exception type: System.StackOverflowException
Message: <none>
InnerException: <none>
StackTrace (generated):
<none>
StackTraceString: <none>
HResult: 800703e9
The current thread is unmanaged
************************************
Exception object: 05ba10b4
Exception type: System.ExecutionEngineException
Message: <none>
InnerException: <none>
StackTrace (generated):
<none>
StackTraceString: <none>
HResult: 80131506
The current thread is unmanaged
************************************
Exception object: 05ba10fc
Exception type: System.Threading.ThreadAbortException
Message: <none>
InnerException: <none>
StackTrace (generated):
<none>
StackTraceString: <none>
HResult: 80131530
The current thread is unmanaged
************************************
Exception object: 05ba1144
Exception type: System.Threading.ThreadAbortException
Message: <none>
InnerException: <none>
StackTrace (generated):
<none>
StackTraceString: <none>
HResult: 80131530
The current thread is unmanaged

miky55
 
Messages: 8
Inscription: 11 Juin 2013, 19:42

Re: Soucis DLL .net reflexil

Messagepar miky55 » 27 Juin 2013, 14:24

etherlord a écrit:Delay signed signifie que ta DLL n'a été signée qu'avec la clé publique, pas avec la clé privée.

Et c'est fort probablement pour ça que ton package ne fonctionne pas.

hxxp://ryanfarley.com/blog/archive/2010 ... iling.aspx

etherlord


J'ai également suivi le tuto de ce lien pour re-signer ma dll avec une clé générée aléatoirement par sn.exe, mais la dll ne se charge toujours pas. Par contre windbg me trouve moins d'exceptions qu'avec la dll non signée (tous les "Invalid object", "Invalid exception object and" n'apparaissent pas , mais uniquement les erreurs du type System.Threading.ThreadAbordException...)

Merci,
Miky55
miky55
 
Messages: 8
Inscription: 11 Juin 2013, 19:42

Re: Soucis DLL .net reflexil

Messagepar Martinooooo » 27 Juin 2013, 15:01

Via Reflexil, une fois l'assembly sauvé, il faut soit que tu fasses ignorer la vérification soit que tu patches tous les assembly qui l'ont en référence (il y a une des options qui correspond à ça).
Acme::Don't
Acme::Bleach
Acme::Pony
Lingua::Romana::Perligata
The Lingua::Romana::Perligata makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)
Avatar de l’utilisateur
Martinooooo
Maître des ténèbres
Maître des ténèbres
 
Messages: 577
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: Soucis DLL .net reflexil

Messagepar miky55 » 27 Juin 2013, 16:08

Martinooooo a écrit:Via Reflexil, une fois l'assembly sauvé, il faut soit que tu fasses ignorer la vérification soit que tu patches tous les assembly qui l'ont en référence (il y a une des options qui correspond à ça).


Si j'ai bien compris si j'ignore la vérif ça devrai fonctionner uniquement sur mon PC... Pour ce qui est du patche des assemblys c'est également problématique, puisqu'il s'agit d'un plugin outlook et que aucune des assemblies de mon package n'y fait reference.
En fait le package MSI installe uniquement des dlls dans son dossier d'installation et enregistre l'addin dans outlook. La clé de mon problème se situe certainement dans l'install msi et les clés de registre qu'il manipule... Ça ne me rassure pas trop...
miky55
 
Messages: 8
Inscription: 11 Juin 2013, 19:42


Retourner vers Reversing

Qui est en ligne

Utilisateurs parcourant ce forum: Dem0nizer, Google [Bot] et 4 invités