好吧,我有两个功能
void RealFunction()
{
MessageBox(NULL, "RealFunction()", "Trace", MB_OK);
}
void FakeFunction()
{
MessageBox(NULL, "FakeFunction()", "Trace", MB_OK);
}
当我尝试这样做时,我得到访问冲突错误
void main()
{
DWORD target = (DWORD)RealFunction;
DWORD trampoline = (DWORD)Trampoline;
cout << target + " - " + trampoline << endl;
}
我不知道为什么在我尝试播放DWORD时它甚至会抛出访问权限?
答案 0 :(得分:2)
DWORD target = (DWORD)RealFunction;
DWORD trampoline = (DWORD)Trampoline;
cout << target + " - " + trampoline << endl;
您的意思是<<
而不是+
。
你有一个const char *
,包含短划线的字符串文字。为此,你要添加两个,可能是相当大的数字,结果是一些荒谬的内存地址,它被解释为一个字符串指针。未定义的行为。