qq_19963303
qq_19963303
采纳率100%
2020-03-23 16:39

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 GKatHere 1年前

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

    点赞 1 评论 复制链接分享