1、修复重定向表的时候为了计算函数偏移,并兼容64位和32位,我把函数指针转为DWORD_PTR后计算
2、75行这句赋值右边强转后的值是正常的
3、但是赋给左边的变量后值就改变了
4、看反汇编窗口,这个立即数被编译成了错误的地址(这张图重新编译了一下,所以和前面的值不同。正确的函数地址是0结尾的,错误的值是9结尾的)
这是为什么?ShowDialog是一个普通的函数,定义如下:
DWORD WINAPI ShowDialog(LPARAM lp_data);
1、修复重定向表的时候为了计算函数偏移,并兼容64位和32位,我把函数指针转为DWORD_PTR后计算
2、75行这句赋值右边强转后的值是正常的
3、但是赋给左边的变量后值就改变了
4、看反汇编窗口,这个立即数被编译成了错误的地址(这张图重新编译了一下,所以和前面的值不同。正确的函数地址是0结尾的,错误的值是9结尾的)
这是为什么?ShowDialog是一个普通的函数,定义如下:
DWORD WINAPI ShowDialog(LPARAM lp_data);
检测下 7ff945f21719h,是不是跳转。有的函数有两个入口,一个函数入口,一个跳到此函数的的入口。