Je suis sur une machine Windows 7 et j'ai essayé d'ouvrir kernel32.dll dans IDA et IDA dit que l'adresse de la fonction IsDebuggerPresent est 0x77e2b020. J'essaie d'appeler la fonction en utilisant l'assemblage en ligne.appel IsDebuggerPresent en utilisant l'assembly inline
Sur une plate-forme VS2010, j'ai essayé en utilisant le code suivant: -
#include<iostream>
using namespace std;
int blah() {
__asm {
xor eax, eax
mov ebx, 0x77e2b020
call ebx
}
}
int main() {
cout<<blah();
return 0;
}
sur la construction de l'exe, il montre le kernel32.dll est en cours de chargement.
J'ai essayé de déboguer l'exe dans OllyDbg et l'erreur est une "violation d'accès" lorsque l'instruction "call" s'exécute.
Oui, je sais que l'appel de l'API directement à partir de C++ est la meilleure/bonne façon de le faire, je le fais pour le plaisir, je ne comprends tout simplement pas pourquoi cela ne fonctionne pas.
merci! mais hmm, ouais je l'avais essayé mais le compilateur semble penser que le label IsDebuggerPresent n'est pas défini. –
Incluez-vous une définition pour cela? – Polynomial