저는 Windows 7 머신에 있으며 IDA에서 kernel32.dll을 열어 보았습니다. IDA는 IsDebuggerPresent 함수의 주소가 0x77e2b020이라고 말합니다. 인라인 어셈블리를 사용하여 함수를 호출하려고합니다. VS2010 플랫폼에서 인라인 어셈블리를 사용하여 IsDebuggerPresent 호출하기
, 나는 다음과 같은 코드를 사용하여 시도 : -#include<iostream>
using namespace std;
int blah() {
__asm {
xor eax, eax
mov ebx, 0x77e2b020
call ebx
}
}
int main() {
cout<<blah();
return 0;
}
EXE 파일을 구축, 그것은 KERNEL32.DLL가로드되는 보여줍니다.
"call"명령이 실행될 때 OllyDbg에서 exe 디버깅을 시도했지만 오류가 "액세스 위반"입니다.
예, C++에서 직접 API를 호출하는 것이 가장 좋고/올바른 방법임을 알고 있습니다.이 작업을 재미있게 수행하고 있습니다. 왜 이것이 작동하지 않는지 이해하지 못합니다.
감사합니다! 하지만 흠, 그래, 나는 이것을 시도했지만 컴파일러는 IsDebuggerPresent 라벨이 정의되어 있지 않다고 생각하는 것 같다. –
정의가 포함되어 있습니까? – Polynomial