#include<stdio.h>
#include<windows.h>
DWORD dwH2GValue;
DWORD g_eax;
DWORD g_eflags;
DWORD g_eflagsBefore;
void __declspec(naked) GetH2GValue()
{
__asm
{
mov g_eax,eax
pushfd
pop g_eflags
mov eax,[esp+0x08]
mov g_eflagsBefore,eax
mov eax,[0x8003f500]
mov ebx,[eax]
mov dwH2GValue,ebx
iretd
}
}
int main()
{
getchar();
__asm
{
//汇编中的int 找的是终端描述符表 找到对应的描述符中的索引进行中断操作,
//比如 int 3 就是系统的breakpoint中断
//这里的int 0x20 是下标为32的描述符
int 0x20
}
printf("%x \n 当前的eflags:%x\n先前的eflags:%x\n",dwH2GValue,g_eflags,g