qq_19963303 2020-03-23 16:39 采纳率: 100%
浏览 197
已采纳

LPTHREAD_START_ROUTINE转DWORD_PTR前后值为什么会改变?

1、修复重定向表的时候为了计算函数偏移,并兼容64位和32位,我把函数指针转为DWORD_PTR后计算

图片说明

2、75行这句赋值右边强转后的值是正常的

图片说明

3、但是赋给左边的变量后值就改变了

图片说明

4、看反汇编窗口,这个立即数被编译成了错误的地址(这张图重新编译了一下,所以和前面的值不同。正确的函数地址是0结尾的,错误的值是9结尾的)
图片说明

这是为什么?ShowDialog是一个普通的函数,定义如下:

DWORD WINAPI ShowDialog(LPARAM lp_data);
  • 写回答

1条回答 默认 最新

  • GKatHere 2020-03-26 06:47
    关注

    检测下 7ff945f21719h,是不是跳转。有的函数有两个入口,一个函数入口,一个跳到此函数的的入口。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?