J'essaie d'appeler MessageBoxA() directement dans l'assembly, en utilisant gcc inline. Cependant, je dois le faire de deux façons: d'abord en utilisant l'adressage dynamique, avec LoadLibrary() et GetProcAddress() - J'ai trouvé un tutoriel à ce sujet, en essayant de le suivre. Mais je suis également intéressé à appeler directement l'adresse de MessageBoxA, qui est 0x7e4507ea dans mon Windows SP3 anglais.MessageBoxA dans Windows AT & T Assembly
Je suis en train d'exécuter ce code:
/*
* eax holds return value
* ebx will hold function addresses
* ecx will hold string pointers
* edx will hold NULL
*
*/
int main(int argc, char **argv)
{
asm(" xor %eax, %eax \t\n\
xor %ebx, %ebx \t\n\
xor %ecx, %ecx \t\n\
xor %edx, %edx \t\n\
push $0x0 \t\n\
push $0x44444444 \t\n\
push $0x44444444 \t\n\
pop %ecx \t\n\
mov %dl,0x3(%ecx) \t\n\
mov $0x7e4507ea, %ebx \t\n\
push %edx \t\n\
push %ecx \t\n\
push %ecx \t\n\
push %edx \t\n\
mov $0x8, %ax \t\n\
call *%ebx \t\n\
");
}
Je ne sais pas si dans Windows est encore possible de le faire, appelez directement l'adresse, sans préciser la bibliothèque (dans ce user32.dll Cas). Je sais sous Linux, il est simple d'appeler write() syscall, mais dans Windows, je ne suis pas encore familier ..
Je m'attends à voir une boîte de message avec "DDDDDDDD". Quelqu'un pourrait-il m'aider s'il vous plaît? Appréciez toute aide, avec des liens tutoriels aussi!
Merci beaucoup
Hey comme vous l'avez mentionné dans un commentaire, vous l'avez fait. Pourriez-vous me décrire comment vous vous entendez avec IAT? dans l'exemple ci-dessus –