要得到一段代码的长度最根本的是要得到开始位置的EIP和结尾处的EIP。可惜我的VS2010不能保存利用汇编语言将EIP压入堆栈不然就简单了。不过既然直接走走不通,换一种思维也可以的。
#include <stdlib.h>
int n,m;
void func()
{
start: _asm push start
_asm pop m
printf("In The Stub!!\n");
label: _asm push label
_asm pop n
}
int _tmain(int argc, _TCHAR* argv[])
{
func();
printf("%u\n",(unsigned)n-(unsigned)m);
system("pause");
return 0;
}
代码