
Untitled
By: a guest on
May 17th, 2012 | syntax:
None | size: 0.86 KB | hits: 9 | expires: Never
How to dereference a function pointer and read as data under MSVC ?
void dummy();
int _tmain(int argc, _TCHAR* argv[])
{
int i;
printf("nReading dummy...n");
for(i = 0; i < 25; i++)
printf("%.2X ", ((char *)((void *)dummy))[i]);
puts("");
dummy();
getchar();
return 0;
}
void __declspec(naked) dummy()
{
__asm
{
nop;
nop;
nop;
nop;
ret;
}
}
Reading dummy...
90 90 90 90 C3 //... rest is random
hh
printf("%02hhX ", ((char *)((void *)dummy))[i]);
X
printf("%.2X ", ((char *)((void *)dummy))[i]);
printf("%.2X ", ((unsigned char *)dummy)[i]);
#include <stdio.h>
void PrintHex(const char* input, const int len)
{
char * tmp=new char[len*3+1];
for(int i=0;i<len;++i)
sprintf(tmp+i*3,"%02x ",*(input+i)&0xFF);
printf("%sn",tmp);
};