J'ai besoin d'un coup de main pour comprendre l'instruction de montage suivante. Il me semble que j'appelle une adresse à someUnknownValue += 20994A ?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
J'ai besoin d'un coup de main pour comprendre l'instruction de montage suivante. Il me semble que j'appelle une adresse à someUnknownValue += 20994A ?
E8 32F6FFFF - call std::_Init_locks::operator=+20994A
Ce que vous utilisez pour obtenir le désassemblage essaie d'être utile, en donnant la cible de l'appel comme un décalage d'un symbole qu'il connaît -- mais étant donné que le décalage est si grand, il est probablement confus.
La cible réelle de l'appel peut être calculée comme suit :
E8
est un call
avec un décalage relatif.par exemple
<some address> E8 32 F6 FF FF call <somewhere>
<some address>+5 (next instruction)
0xFFFFF632
.-0x9CE
.call
L'instruction est à <some address>
et a une longueur de 5 octets ; l'instruction suivante est à <some address> + 5
.<some address> + 5 - 0x9CE
.Si vous analysez le fichier PE à l'aide d'un désassembleur, ce dernier peut vous avoir donné un code erroné. La plupart des auteurs de logiciels malveillants utilisent l'insertion de E8 comme technique anti-désassemblage. Vous pouvez vérifier si les codes au-dessus de E8 sont des instructions de saut où l'emplacement du saut est après E8.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.