히공

gcc 인라인 어셈을 사용해봤다. 본문

일기

gcc 인라인 어셈을 사용해봤다.

heegong 2021. 3. 5. 22:07
728x90
#include <stdio.h>
#include <Windows.h>

char *GetTib(){
    char *pTib;
    __asm__("movl %%fs:0x18, %0" : "=r" (pTib) : : );
    return pTib;
}

char *GetPeb(){
    char *pPeb;
    __asm__("movl %%fs:0x30, %0" : "=r" (pPeb) : : );
    return pPeb;
}


int IsDebugger(char *peb_address){
	return (int)*(peb_address + 2);
}

int NtGlobalFlag(char *peb_address){
	return (int)*(peb_address+0x68);
}


int main(){
	char *peb_addr = GetPeb();
	printf("%d\n",IsDebugger(peb_addr));
	printf("%x\n",NtGlobalFlag(peb_addr));
	return 0;
}

dev c++에서 사용하기 위해서 만들었다.

신기...

Comments