Besoin d'aide pour cracker un .net

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

Besoin d'aide pour cracker un .net

Messagepar RomanLeBg » 27 Décembre 2018, 11:55

Bonjour à tous !

Cela vas faire deux jours que je suis coincé sur un problème et je comprends rien. je m'explique:

J'ai acheté des caméras ip il y a longtemps pour les contrôler avec mon pc et le soft H*e*r*o*s*p*e*e*d V*m*s*L*i*te,
cependant j'ai trouvé un logiciel nommé "C*a*m*l*y*t*i*c*s" qui permet de faire de la reconnaissance d'objet
Avec le suivi etc etc et tout est envoyé par mail ou par une api. C'est super j'ai même fait un applets ifttt
pour rediriger tout ça vers Telegram.

Cependant je n'avais pas vu que le logiciel avais 20 jours d'essais, le fait de voir api dans les settings
m'a fait penser qu'il étais opensource lol donc potentiellement gratuit alors qu'il coûte $129 à vie
Même si c'est pas si chère que ça $129 pour un soft à vie (si je compare ça à ceux qui achètes des skins
Fortnite c'est comme si le soft étais gratuits lol).

Bref du coup je cherche sur internet comment cracker un logiciel, alors je test avec cheat engine dans les
"Referenced strings" (je précise que je n'y connaissais absolument rien au cracking/reverse à ce moment là),
Rien.
alors je me dit que peut êtres que le tuto est trop vieux et maintenant aucun logiciel n'a de "referenced
strings" alors je regarde dans "all strings" et je cherche "success" et je tombe enfin sur "Activation Success"

Là je peut vous dire que j'étais content lol donc je continu le tuto et je cherche donc un jump dans l'asm
Même si il n'y en a qu'un seul je met quand même un nop donc je test et absolument rien du tout se passe.
alors je met des nop un peu partout pendant une heure et a part faire buger le programme je n'arrive à rien.
Il étais donc temps de chercher une autre méthode.

Je tombe sur un tools nommé JustDecompile alors je le lance et je ne comprends rien mais alors rien du tout
au programme je tombe sur les if 1==0 -> dsgjhdsgjkh(); ou sur des try: if 1 == fsdguhgfdsh -> do xsfdhdfdfskh().goto label 0C150.
alors je me dit que le programme a été encrypté pour le protéger car c'est pas possible d'écrire ça à la main
à noter que les seuls class visibles étais des class "obfuscator" donc je cherche sur internet et bingo
ça aide à crypter le programme donc je cherche encore un tuto pour voir si il y a une solution et je tombe
donc sur de4net. Incroyable ce soft, tout est devenu plus clair.

Donc je repart à ma recherche et je tombe rapidement sur une class "ActivationLicense"
Image
(à noter que depuis j'utilise .Net reflector au lieu de JustDecompile)
donc je scroll vite fait et je tombe sur le fameux "Activation success" et sur les différents messages d'erreurs
d'activation. mais comment je peux faire pour modifier ce code ?
Reflexil. je le télécharge donc et modifie le if ici:
Image
en changant le brtrue par un brfalse
Image
YES ENFIN ! il me dit Activation Success au lieu du message d'erreur ! Je suis désormais un Black hat 8) ...
pendant 2 secondes lol j'essaye donc de me connecter à une caméras mais c'est impossible
alors je change le nom de Camlytics cleaned Patched.exe par Camlytics.exe comme l'original mais rien
n'y fait. Donc je regarde le code et juste après il y a un bloc try qui essai d'ajouter quelque chose
au dictionnaire je suis donc sûr et certain que c'est à cause de ça qu'il bug car le soft doit vérifier
le dictionnaire à un moment et comme il n'est pas valide ça cause le fait qu'il n'arrive pas à se
connecter donc je cherche un autre endroit à attaquer et je tombe sur les variables de Trial,
TrialExpired et Premium
Image
je change donc TrialExpired à 1 et Premium à 2
Image
et là bingo numéro 2: le bouton pour aller activer le logiciel a mystérieusement disparu... :D
mais malheureusement ce satané logiciel est malin il me bloque encore la connection à ma caméra
alors je regarde les logs:
Code: Tout sélectionner
2018-12-27 11:16:32,349 [1] INFO  Camly.App - App started, basic logging is enabled
2018-12-27 11:16:32,479 [6] ERROR Camly.App - Starting REST API failed
System.InvalidOperationException: L'opération 'Echo' du contrat 'IRestService' a un UriTemplate qui attend un paramètre nommé 'M' mais l'opération ne comporte aucun paramètre d'entrée de ce nom.
   à System.ServiceModel.Dispatcher.UriTemplateClientFormatter.Populate(Dictionary`2& pathMapping, Dictionary`2& queryMapping, Int32& totalNumUTVars, UriTemplate& uriTemplate, OperationDescription operationDescription, QueryStringConverter qsc, String contractName)
   à System.ServiceModel.Web.WebServiceHost.IsRawContentMapperCompatibleDispatchOperation(OperationDescription operation, Int32& numStreamOperations)
   à System.ServiceModel.Web.WebServiceHost.SetRawContentTypeMapperIfNecessary(ServiceEndpoint endpoint, Boolean isDispatch)
   à System.ServiceModel.Web.WebServiceHost.OnOpening()
   à System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   à GClass0.method_1(WebServiceHost& webServiceHost_0)
   à GClass0.method_7()
2018-12-27 11:16:32,882 [1] INFO  Camly.App - Found 0 video channels
2018-12-27 11:16:46,565 [1] ERROR Camly.App - Disposing REST API host failed
System.ServiceModel.CommunicationObjectFaultedException: L'objet de communication System.ServiceModel.Web.WebServiceHost ne peut pas être utilisé pour la communication car il est dans l'état Faulted.
   à System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)
   à System.ServiceModel.ServiceHostBase.System.IDisposable.Dispose()
   à System.Reactive.Disposables.SerialDisposable.Dispose()
   à GClass0.Dispose()

je ne comprends rien à part que Gclass0 est dans le code decompilé:
Image
et que gclass comporte le message d'erreur de l'api aussi mais je comprends pas pourquoi elle bug
alors que je l'ai désactivé dans les paramètres lol donc j'abandonne de ce coté là et j'essaye
un autre tuto sur OllyDbg qui active un logiciel par internet en modifiant dans la mémoire
la réponse du serveur. Donc j'essai avec x64Dbg mais lorsque je place un breakpoint
et que je resume après l'avoir touché Camlytics redémarre. je pense que c'est encore une protection
que de4Dot n'as pas trouvé. à noter que c'est du Tls qui circule en plus de l'http
Image
(c'est ce que j'ai trouvé avec ProcessExplorer et Wireshark, lors de l'activation par internet camlytics
se connecte à deux serveurs différents et échange en https:
Image
et en http:
Image
(je sais pas si j'ai selectionné le bon packet pour vous montrer mais je pense pas que l'http soit important
mais vers les derniers packet mon pc envoi un packet contenant "Activation Failed" je pense que ce soit pour
leurs stats).

Donc me voila aujourd'hui j'ai beaucoup appris avec ça mais je n'ai toujours pas réussi à le cracker
donc si vous avez des pistes sur quoi me lancer ce serais avec plaisir.
J'ai aussi essayé avec .net reflector d'exporter tout en .cs et recompiler le programme avec visualstudio
mais les variables comporte des < ou des ) donc à moins de tout chercher et remplacer je ne sais pas comment
je peut faire surtout que des fois c'est d'autres erreurs qui apparaissent c'est assez compliquer. en plus je sais
pas coder en C# donc bon.. :mrgreen:
RomanLeBg
 
Messages: 2
Inscription: 27 Décembre 2018, 10:22

Re: Besoin d'aide pour cracker un .net

Messagepar Hao » 27 Décembre 2018, 23:50

RomanLeBg a écrit:en plus je sais pas coder en C# donc bon.. :mrgreen:

Salut, ça tombe bien, c'est du VB. :mrgreen:
Y a DnSpy (hxxps://github.com/0xd4d/dnSpy) qui est pas mal comme tool pour le .NET.

Sinon tu as laissé trainé le nom du soft dans ton post, je crois qu'il vaut mieux éviter. :roll:
Avatar de l’utilisateur
Hao
Ultra Crackeur !!
Ultra Crackeur !!
 
Messages: 324
Inscription: 27 Novembre 2013, 22:24

Re: Besoin d'aide pour cracker un .net

Messagepar etherlord » 28 Décembre 2018, 09:35

Le premier problème je pense concerne l'approche.

en changant le brtrue par un brfalse


Pour une protection linéaire, en assumant que ce contrôle soit le seul, cela peut le faire. Si la protection est un peu plus évoluée, et comme cela semble être le cas, que des contrôles sont effectués à différentes places, il est parfois nécessaire de comprendre comment la protection fonctionne. Le paramètre que tu as changé a peut-être un impact sur une autre partie de la protection, située ailleurs, et qui gère la vérification autrement.

Exemple:

Premier cas:

Code: Tout sélectionner
## registered if password = serial
serial = abcd
input 'password'
if password == serial then
   licensed
else
   go away
endif


Dans ce cas de figure, effectivement, en changeant comme tu l'a fait, tu contourne la protection (password <> serial). Mais ce genre de protection, c'est de plus en plus rare à trouver. Un peu trop facile à contourner. En plus c'est pas hyper propre dans le sens où un utilisateur enregistré ne peut pas activer le soft. Mais ça marche

En reprenant l'exemple ci-dessus, voici un autre moyen de faire une protection plus évoluée:

Code: Tout sélectionner
##registered if password = serial
serial = abcd
param1 = 4
....
input 'password'
if password == serial then
   param1 = 0
else
   param1 = 2
endif
...
...
if char(password,2)=char(serial,2) then
   extra_param7=1
endif
....
....
if extra_param7=1 then
   param2 = 3
 if param1=0
   param = 3
   licensed
 endif
endif


Dans ce cas là, si tu te borne à faire la même modif que plus haut, ton soft ne sera pas enregistré (manque la seconde condition pour activer le soft)

Donc essayer d'annuler la vérification, c'est une méthode rapide qui vaut la peine d'être essayée, mais ne t'attends pas à un résultat pour la plupart des cas.

Il est recommandé d'observer le comportement de la cible avant de s'y attaquer. Wireshark, procmon, etc.. c'est le genre d'outils qui te permette de voir
depuis l'extérieur ce que fait ton programme. Avec Wireshark, tu a pu voir que ton logiciel se connecte à un serveur sur internet.

=> Isolation de la cible dans une VM pour l'analyse (cela évite de trop se faire remarquer)
=> Il faut comprendre l'information qui est échangée entre la cible et le serveur de vérification

Comme cela peut être délicat de déchiffrer du contenu TLS si tu ne peut pas importer le certificat correspondant dans Wireshark, c'est au niveau de programme
qu'il faut voir ce qui revient de la couche réseau (BP sur les API qui traitent les données).

Après tu a toujours le choix de soit comprendre ce qui se passe, pour trouver le meilleur moyen de contourner la protection, ou de modifier ce qui traite le
contenu (pas forcément nécessaire de connaître le bon contenu pour cela)

Globalement je trouve que si tu débute, tu t'en sort plutôt bien, tu devrait y arriver, mais c'est très consommateur de temps...

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

Re: Besoin d'aide pour cracker un .net

Messagepar Hao » 03 Janvier 2019, 21:43

Sinon le système de licence est un peu (beaucoup) naze... Donc ça peut se keygen sans problème. :wink:
Avatar de l’utilisateur
Hao
Ultra Crackeur !!
Ultra Crackeur !!
 
Messages: 324
Inscription: 27 Novembre 2013, 22:24


Retourner vers Reversing

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

cron