#include <stdio.h>
#include <windows.h>
int
main(
int
argc,
char
* argv[]) {
HANDLE
hFile = CreateFile(
"D:\\out.bmp"
, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if
(hFile == INVALID_HANDLE_VALUE)
{
printf
(
"Error"
);
return
-1;
}
DWORD
dwSize;
dwSize = GetFileSize(hFile, NULL);
LPVOID
lpAddress = VirtualAlloc(NULL, dwSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if
(lpAddress == NULL)
{
printf
(
"Error"
);
return
-1;
}
RtlZeroMemory(lpAddress, dwSize);
DWORD
dwRead;
ReadFile(hFile, lpAddress, dwSize, &dwRead, 0);
system
(
"pause"
);
__asm {
call lpAddress;
}
_flushall();
return
0;
}