TRAINER DÉMINEUR | EXEMPLE DE WRITEPROCESSMEMORY

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 déc. 2007 à 20:08
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 31 déc. 2007 à 14:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45228-trainer-demineur-exemple-de-writeprocessmemory

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 14:20
push al
alors que je venais d'écrire plus haut:
Sur system 32 bits, l'adressage se fait par 4 octets donc
push QuatreOctets !!!
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 14:01
Si je fait un
mov al, PokeNb

et après un
push al
J'ai une erreur "byte register cannot be first operand"

Je vait allez lire quelque tuto, car bon je galère un peu.
J'ai pas compris ce que ta dit au dessus.

pk wParam vaut ptr[esp+12]
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 13:47
dword ptr[esp+12]
lecture ou écriture DWORD à l'adresse indiquée, ici [esp+12]
on ne lit ou écrit qu'à des adresses correctement alignées:
BYTE no prob
WORD 2
DWORD 4
xmm 8 ou 16 selon taille adressée
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 13:36
push offset xxx
met l'ADRESSE indiquée sur la stack
bien entendu on met l'adresse sur stack quand la fonction appelée attend une adresse, rien que du normal.
Sur system 32 bits, l'adressage se fait par 4 octets donc
push QuatreOctets

PokeNb db 6
xor eax, eax
mov al, PokeNb
ou alors: movzx eax, PokeNb
ou alors... tant de possibilités.
et puis: push eax
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 13:17
Peut tu détailler ce que veut dire dword ptr[esp+12] ?

J'ai un autre problème
si je fait un
Push 6
sa marche mais si je met
PokeNb db 6
dans les data et que je met
push offset PokeNb
Je n'ai pas d'erreur mais sa ne marche pas et push PokeNb marche pas non plus sa compile pas.

Pourrai tu m'expliquer quand il faut mettre offset ou pas j'ai pas car je sais jamais.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 déc. 2007 à 01:37
Lache toutes ces macros, .if .else et autres biniouteries et écris du vrai asm en gérant toi meme la stack.
EBX est à restaurer, tout comme ESI, EDI et EBP en sortie de bloc (fonction) sous Windows.

.if wParam == IDC_PATCH
en ASM:
cmp dword ptr[esp+12], IDC_PATCH
je LABEL
etc...

Il ne faut surtout pas voir l'ASM comme un snobisme ou une caste dont on peut faire partie. Quand on le fait c'est dans le but d'obtenir mieux que ce qu'un compilo C produirait sinon totalement inutile et donc nuisible. Je t'assure que dans ton exemple VC++ fera très nettement mieux pour un effort développeur nettement moindre.
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
31 déc. 2007 à 00:23
Voila j'ai modif un peu, une fois j'avait essayer d'utiliser directement eax dans un autre invoke sa planter j'avait du me gourrer, je croyait que c'était alors pas possible donc je stocker.

Par contre pour le PID j'y arrive pas sa plante.

Merci pour tes conseils brunews si tu a d'autres truc a dire :)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2007 à 20:08
Tu as commencé ce SABIR il y a 2 jours, pas avec ça que tu sauras écrire un asm optimisé, c'est pourtant le seul but à avoir quand on écrit en asm.

mov pHandle, eax
et derrière tu iras combien de fois reprendre ce handle sur une adresse mémoire...
Il y a des registres à employer !!!
Rejoignez-nous