关于HIDWORD 取 高位的问题

天涯倦客 2011-11-08 09:24:12
#include <conio.h>
#include <stdio.h>
#include <windows.h>

int sub_4D27D8(__int64 a1)

unsigned int v4;
v4 = *HIDWORD(a1);


error C2100: 非法的间接寻址

问题 1 HIDWORD 在哪里 定义的
2 错误如何处理
3 怎么样 取 高位地址
...全文
2754 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天涯倦客 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 waistcoat06 的回复:]

楼主明显是IDA F5插件搞出来的函数

1.HIDWORD是64位开发用的
#define HIWORD(l) ((WORD)((DWORD_PTR)(l)) >> 16))
#define HIDWORD(l) ((DWORD)(((DWORDLONG)(l) >> 32) & 0xFFFFFFFF))

2.a1的高32位在*下,谁知道访问哪儿去了,如果想取高32……
[/Quote]
反汇编 有1000行 比较累。。
c++有些定义不熟悉。。
悲剧
天涯倦客 2011-11-08
  • 打赏
  • 举报
回复
谢谢上面的两位。。
解决了。。

ida 反汇编出的 函数没有这个定义

定义应该是 #define HIDWORD(x) (*((_DWORD*)&(x)+1))
WaistCoat06 2011-11-08
  • 打赏
  • 举报
回复
楼主明显是IDA F5插件搞出来的函数

1.HIDWORD是64位开发用的
#define HIWORD(l) ((WORD)((DWORD_PTR)(l)) >> 16))
#define HIDWORD(l) ((DWORD)(((DWORDLONG)(l) >> 32) & 0xFFFFFFFF))

2.a1的高32位在*下,谁知道访问哪儿去了,如果想取高32的值把*去了

3.你即使想去a1高32的地址值,也是个栈地址值,貌似没啥用,
__int64 V4 = &al


PS,直接看汇编吧
luciferisnotsatan 2011-11-08
  • 打赏
  • 举报
回复
HIDWORD返回的应该不是一个指针,而你对它解引用(*)。至于HIDWORD哪来的,vs里右键goto看下,代码里哪定义的

// C2100.cpp
int main() {
int r = 0, *s = 0;
s = &r;
*r = 200; // C2100
*s = 200; // OK
}


luciferisnotsatan 2011-11-08
  • 打赏
  • 举报
回复
问题 1 HIDWORD 在哪里 定义的

我还想问呢,自己的代码,不知道HIDWORD哪来的?

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧