malcomxw
Messages postés20Date d'inscriptionmercredi 22 juin 2005StatutMembreDernière intervention18 avril 2010
-
5 déc. 2007 à 17:24
malcomxw
Messages postés20Date d'inscriptionmercredi 22 juin 2005StatutMembreDernière intervention18 avril 2010
-
30 déc. 2007 à 08:53
Bonjour tout le monde<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
j'ai besoin de votre aide et je vous remercis d'avance
puis-je mettre un mots de passe sur un programme, comme ca personne ne peut l'utiliser sur mon ordi.
je m'explique g un jeux dont je veux etre le seul utilsateur sauf que l'ordi est utiliser par plusieurs personne du fait je veux mettre un mots de passe sur
l'executable comme ca quant je lance le jeux je mets le mots de passe avant d'acceder au jeu
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 6 déc. 2007 à 19:42
Salut,
Barf, c'est tentant comme exercice ! Mais je sais pas si je vais trouver le temps de le faire...
Bon alors, il me faudrait :
Le nom du fichier .exe du jeu.
La taille du mot de passe, en nombre de caractères (de 6 à 10)
Que tu saches à peu près te servir de ton PC.
Que tu sois sous XP ou 2000.
Deux adresses.
Avec ça, je devrais pouvoir te fournir une portion de code executable
par une application (ntsd) qui se trouve déjà sur ton PC. Ce bout de
code devrait être en mesure de faire une copie patchée du fichier .exe
du jeu. La version patchée demandera un mot de passe au lancement. Je
garantit pas que ça marcherat : ça dépend de la façon dont à été codé
le jeu... Attention : le .exe patché risque fortement de ne plus fonctionner si tu changes de
système d'exploitation.
Pour les deux adresses, Menu Démarrer->Executer.
Puis dans la zone de texte, tu tapes :
ntsd calc
Une invite de commande doit apparaître. Tu tapes dedans :
? LoadLibraryA
Entrée pour lancer la commande, puis tu tapes :
? GetProcAddress
Et tu posts ici les deux valeurs entourées en rouge ci-dessous
(Recopies les bien : si elles sont fausses, ça ne marcherat jamais) :
<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 11 déc. 2007 à 10:00
Et mes adresses alors ?
En fait, c'est pas grave, je risque de pas en avoir besoin.
Je t'explique ce que tu vas devoir faire :
1 Faire une copie de sauvegarde de DesignTool.exe.
2 Charger DesignTool dans le débogueur ntsd.
3 Executer un fichier de commandes ntsd.
4 Récupérer le fichier patché (c:\Test.exe).
5 Le renommer en DesignTool.exe et le coller dans le dossier où se trouvais l'original.
J'ai fait un premier fichier de commandes ntsd qui enregistre simplement l'exe depuis la RAM vers le disque.
Le processus est plus compliqué qu'on ne pourrait le penser car un .exe
est composé de sections qui ne se trouvent pas à la même place dans RAM
par rapport à dans le fichier.
D'autre part, Windows modifie certaines sections lorsqu'il les charge en RAM.
Bref, la copie ne fonctionne pas forcément... Il va donc falloire que
tu t'assures que la copie fonctionne aussi bien que l'original.
Normalement, les deux fichiers doivent avoir la même taille.
Pour executer le fichier de commandes ntsd, il faut que tu fasses un
fichier source.asm contenant le code qui se trouve à la fin de ce post.
Il faut que tu places ce fichier dans le même répertoire que
DesignTool.exe, sans oublier d'en avoir fait une copie de sauvegarde.
Puis il faut que tu t'arrange pour avoir une invite de commande dont le
répertoire courant est celui de DesignTool.exe. Pour cela, il faut en
lancer une (Démarrer->Executer, cmd), puis par exemple utiliser la
commande cd. La touche TAB permet taper les noms de répertoires plus
facilement, et cd .. permet de remonter au répertoire parent.
Une fois que tu es dans le bon répertoire, tu fais :
ntsd -c "$<source.asm" .\DesignTool.exe
Là, si tout s'est bien passer, un fichier Test.exe est apparu à la
racine. Tu le renomme et le copie dans le répertoire du DesignTool.exe
origninal, tu vois s'il fonctionne aussi bien que l'original.
Si c'est ok, tu postes ici et je ferrais un autre fichier de commande
ntsd qui va faire une copie patchée avec une demande de mot de passe.
*
* Ce programme écrit l'exe en cours de débogage
* sur le disque dans le fichier c:\Test.exe
* Pensez à conserver une copie de l'executable d'origine.
*
* Utilisation :
* ntsd -c "$<source.asm" Fichier.exe
*
r esp = esp - 1000
r ebp = esp
eb esp + FF0 'c' ':' '\\' 'T' 'e' 's' 't' '.' 'e' 'x' 'e' 0
*
* ebp + FEC : Adresse du module
* ebp + FE8 : Nombre de sections
* ebp + FE4 : Adresse de la table des sections
* ebp + FE0 : Nombre d'octets écrits par WriteFile
*
a ebp
*
* Récupération de l'adresse du module courant
*
xor @eax, @eax
push @eax
call GetModuleHandleA
mov @esi, @eax
*
* Calcul de l'offset du COFF header.
* On ajoute 4 pour dépasser PE\0\0.
*
add @eax, dword ptr [@eax + 3C]
add @eax, 4
*
* Récupération du nombre de section.
*
xor @ecx, @ecx
mov @cx, word ptr [@eax + 2]
mov @edi, @ecx
*
* Calcul de l'emplacement de la table des sections.
* Elle est située après l'optional header.
* 14 est la taille du COFF header.
*
xor @ecx, @ecx
mov @cx, word ptr [@eax + 10]
add @eax, @ecx
add eax, 14
*
* Récupération de l'offset fichier de la section
* la plus proche du début du fichier.
*
mov @ebx, dword ptr [@eax + 14]
*
* On fait de la place dans les registres.
*
mov [@ebp + FEC], @esi
mov [@ebp + FE8], @edi
mov [@ebp + FE4], @eax
*
* Ouverture du fichier
*
xor @eax, @eax
push @eax
* FILE_ATTRIBUTE_NORMAL
mov @edx, 80
push @edx
* CREATE_ALWAYS
mov @edx, 2
push @edx
push @eax
push @eax
* GENERIC_WRITE
mov @edx, 40000000
push @edx
* Nom du fichier
lea @edx, [@ebp + FF0]
push @edx
call CreateFileA
mov @edi, @eax
*
* Ecriture des headers et de tout ce qu'il
* y a jusqu'à la première section.
*
xor @eax, @eax
push @eax
lea @eax, [@ebp + FE0]
push @eax
push @ebx
mov @eax, [@ebp + FEC]
push @eax
push @edi
call WriteFile
*
* Ecriture des sections.
* On écrit offset fichier moins
* offset fichier de la suivante.
* Pour la dernière, on écrit
* taille fichier.
*
mov @esi, dword ptr [@ebp + FE4]
mov @ecx, dword ptr [@ebp + FE8]
* Boucle
mov dword ptr [@ebp + FE8], @ecx
xor @eax, @eax
push @eax
lea @eax, [@ebp + FE0]
push @eax
* C'est la dernière ?
cmp @ecx, 1
* je
db 74
db 8
mov @eax, dword ptr [@esi + 3C]
sub @eax, dword ptr [@esi + 14]
* jmp
db EB
db 3
mov @eax, dword ptr [@esi + 10]
push @eax
mov @eax, dword ptr [@esi + C]
add @eax, dword ptr [@ebp + FEC]
push @eax
push @edi
call WriteFile
* Passage à la section suivante
add @esi, 28
mov @ecx, dword ptr [@ebp + FE8]
dec @ecx
* jnz
db 75
db C3
*
* Fermeture du fichier.
*
push @edi
call CloseHandle
*
* Fermeture de l'application.
*
xor @eax, @eax
call ExitProcess
r eip = ebp
g
q
<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08