Désassemblage de mes éxécutables

Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
- - Dernière réponse : Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- 29 avril 2009 à 11:39
Bonjour
L'un de mes éxécutables (compilé en code natif) d'un addon de 800mo se voie cracké par un hacker.
Pourquoi ? parce-qu'il arrive à lire tous les textes de type String inscrits dans le code
donc contourner mes mots de passe et mes MsgBox.
Ma question est:
Comment puis-je cacher tous les textes sans utiliser le MD5 sur tous les textes (type String) ?
merci de vos réponses rapides. C'est urgent, ce prog est utilisé par plus de 10000 personnes.

jolauje
Afficher la suite 

20 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Ce n'est pas la découverte de tes mots de passe (tu peux les crypter autant que tu veux...) qui lui a servi...

Il a tout simplement substitué une condition à l'autre, picétou ...

genre :

Private Sub Command3_Click()
  If True Then MsgBox "on continue"
  If Not False Then MsgBox "on continue"
End Sub

et tu pourras difficilement lutter contre ces méthodes vieilles comme le monde
Commenter la réponse de jmfmarques
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
salut

oui voilà le soucis, il passe à côté et n'affronte pas ma protection directement
il fait sauter le MsgBox et c'est tout. Comment faire ? comment faire ?
........
et pourquoi pas avec un compresseur perso qui lance mon exécutable ?
de type executable Winrar mais sans avoir la page de démarrage Winrar bien sûr.

jolauje
Commenter la réponse de jolauje
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
Toute protection quel qu'elle soit a (et aura) toujours un gros point faible, le test d'autorisation.

Quel quel soit le système que tu mettra en place, il faudra toujours à moment donné testé si l'autorisation d'execution est donnée.
Et ce test est toujours contournable.

Maintenant si évidement tu stocke tes mdp en dur et en clair dans le code, il n'est même pas necessaire de contouner le test, une simple ouverture avec notepad (MSWord en mode Récupération de texte est aussis pas mal) permet de récupérer le code.

Commence déja par non pas stocker les mdp, mais leurs signatures (hash). Comment ça impossible de retrouver le mdp à partir du texte dans l'exe.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
merci, j'ai bien compris ça.

jolauje
Commenter la réponse de jolauje
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour

Sinon, autres conseils :
- Si c'est possible, ne pas bloquer toute l'application, mais réduire ses fonctionnalités (petit à petit), comme ça c'est plus difficile de trouver où est fait le controle.
- Ne pas mettre les chaines critiques (mots de passe, texte demandant l'authentification, ...) en clair (mais pas tout crypter non plus), un XOR peut suffir, mais il y a mieux et c'est plus lourd aussi.
- Sinon, il y a une astuce, vue quelque part, mais je ne sais plus où (The hackademy journal je crois), qui consiste à demarrer une instruction ASM, ce qui a tendance à déconcerter les désassembleurs quand c'est bien fait.

voilà, pour completer.

Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
Commenter la réponse de NHenry
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
oui, evites le "Vous n'etes pas autorisé => Unload Me"

réduit les fonctionnalités, provoques des crashes... duplique le code de tes a divers endroits...
testes la presence de debuggeurs,
testes le temps avant/après autour de la protection... si ce temps est trop long, on analyse surment le flot de traitement de ton appli
Commenter la réponse de Renfield
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
oui, le hacker m'a recontacté, il me met qu'il a mis 10 mn pour contourner ma protection parce-qu'il a listé mes msgbox (visibles en clair dans son prog désassembleur) et a donc annulé l'effet de celui-ci en changeant uniquement un bit.
Je suis un peu déconcerté par tout ça, ça me fout les nerfs.
2 ans de boulot foutus en l'air en 10mn.
Il y a sûrement une solution, enlever les msgbox ou je ne sais plus.
Reste la solution serveur internet, mon prog se connecte à internet pour fonctionner.
Je peux très bien récupérer des informations par ce biais.
Qu'en pensez-vous ?
Est-ce que ça peut facilement se cracker aussi ?

jolauje
Commenter la réponse de jolauje
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
si les infos recupérées par internet sont indispensables au bon fonctionnement du programme, oui...
si ca te permet juste de faire un if qui va bien, c'est mort.

si ce hacker peut faire les tests qui vont et te tenir au courant, c'est sympa

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
merci de ta réponse.
pas de if, c'est le serveur qui va interpréter en conséquence
et réagir en fonction car ça passe via internet pour l'envoi de temps de course.
Donc, s'il mon prog détecte une anomalie et qu'il le dit au serveur, celui-ci
enregistrera l'information et m'en avertira, donc pas de msgbox, pas de if. ;)

Je crois que je vais travailler la-dessus.

jolauje
Commenter la réponse de jolauje
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
si tu veux un testeur, je me portes volontaire... enfin, si ca prend pas trop de temps

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
je te remercie mais, non, c'est trop compliqué.

j'ai trouvé la solution, je pense.
Contrôle MD5 (+ cryptage) de mes fichiers compressés 7z  et encryptés AES 256 avec mot de passe (beaucoup de caractères) + cryptage du mot de passe.
Contrôle caché rapide, pas de valeur mémorisée, pas de msgbox, pas de if, envoi sur serveur direct, vérification du serveur sur base de données avec mot de passe, autorisation ou pas de l'utilisation ou mémorisation de la tricherie.

Egalement, prog compilé et recompilé

Je crois que ça va le faire encore faut-il s'en donner les moyens.

Ce qui inclus que je doive recoder mes fichiers avec un nouveau mot de passe puis le crypter, créer les MD5 cryptés aussi, créer la base de données ainsi que le code serveur etc... etc...

je vais le faire car j'ai trop travaillé sur ce projet pour le voir capoter si vite.

merci à tous pour votre aide.

jolauje
Commenter la réponse de jolauje
Messages postés
5
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
28 avril 2008
0
Merci
Bonjour

Au propos de protéger un exe par une liaision au net, pouvez-vous me dire comment et où déposer une base de données ACCESS 97 sur le net et y effectuer une requete SQL depuis l'appli !
Je possède une page perso  sur Orange.

Comment effectuer la connexion à cette page par VB et pouvoir transmettre un SELECT * FROM ???    ou autre ?
Michel MONTIAS - idc informatique
Commenter la réponse de cs_michelmm
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
postes une nouvelle question sur le forum...
Commenter la réponse de Renfield
Messages postés
746
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015
0
Merci
NHenry, qu'appeles-tu "demarrer une instruction ASM"...???
Commenter la réponse de vegetalain
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Ce que j'ai voulu dire, c'est que une chaine de texte est clairement visible dans un décompilateur, il suffit juste de commencer (1er octet par ex) par un code de début d'instruction, et le désassembleur interpretera la chaine comme des instructions assembleur.

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry
Messages postés
32
Date d'inscription
samedi 20 janvier 2001
Statut
Membre
Dernière intervention
5 février 2009
0
Merci
re

Maintenant, je code tout avec la méthode citée plus haut (pas de chaine string, tout en numérique). C'est compliqué mais ça fonctionne.
PQ ? Les désassembleurs font sauter les msgbox pour laisser passer...
et modifient les strings.

jolauje
Commenter la réponse de jolauje
Messages postés
21
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
14 juin 2011
0
Merci
proposition:
utilisez la condition(si le logiciel de désassemblage est en cours d'exécution then terminer l'application) pour éviter de loader l'application par un desassembleur;
je suis zero au VB,
Commenter la réponse de mihoubi3333
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Ce n'est pas ce qu'il y a de mieux, car le vil pirate corsaire, n'aura qu'à vérifier l'utilisation de la commande de fermeture du programme pour voir où il se fait jeter.
Le mieux, c'est détourner l'exécution du programme. (Un jeu faisait cela, passé un certains temps, il y avait trop d'ennemi pour pouvoir continuer le jeu).

http://nhen0039.chez-alice.fr/index.php
Commenter la réponse de NHenry
Messages postés
746
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015
0
Merci
"Le mieux, c'est détourner l'exécution du programme. (Un jeu faisait
cela, passé un certains temps, il y avait trop d'ennemi pour pouvoir
continuer le jeu)."

Comment cela??
Commenter la réponse de vegetalain
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
tu fais pas :

If PasGentilUtilisateur Then
End
End If

faut etre plus filou...

consommer de la mémoire, se faire des bombes a retardement, quoi...
Commenter la réponse de Renfield