IDA Pro - 将 HIBYTE、LOBYTE 和 __OFSUB__ 宏重写为 C++
IDA Pro - rewriting HIBYTE, LOBYTE and __OFSUB__ macros to C++
我能够挂钩一个函数,现在我正在尝试重写它的代码,但我遇到了问题
翻译 IDA Pro 伪代码生成的一些宏
LOBYTE(v8) = v8 & 3;
LOBYTE(v12) = 0;
HIBYTE(v12) = *result;
v21 = __OFSUB__(v24 + 1, 30);
LOBYTE 和 HIBYTE 被 Visual Studio 检测到,但是当我复制粘贴它们时出现此错误
Error (active) E0137 expression must be a modifiable lvalue
我试着重写成这样
LOBYTE(v8); v8 = v8 & 3;
然后错误消失了,但它似乎不能正常工作。
至于offsub,它根本没有被检测为有效的宏。
你知道我该怎么做吗?
LOBYTE
和 HIBYTE
是执行一些位移逻辑的宏,因此您可以从 unsigned short
中提取特定值。因此,例如,如果您有一个值为 0xAB93
的 unsigned short
,您可以这样获取特定字节:
unsigned char lo = LOBYTE(0xAB93);
unsigned char hi = HIBYTE(0xAB93);
lo
将保存值 0x93
而 hi
将保存值 0xAB
您想使用单独的宏来组合这些值。例如:
unsigned short both = MAKEWORD(lo,hi);
您可以在 IDA_INSTALL_PATH/plugins/defs.h
文件中找到此宏定义。
您可以找到有关 IDA 使用宏的所有信息。
我能够挂钩一个函数,现在我正在尝试重写它的代码,但我遇到了问题 翻译 IDA Pro 伪代码生成的一些宏
LOBYTE(v8) = v8 & 3;
LOBYTE(v12) = 0;
HIBYTE(v12) = *result;
v21 = __OFSUB__(v24 + 1, 30);
LOBYTE 和 HIBYTE 被 Visual Studio 检测到,但是当我复制粘贴它们时出现此错误
Error (active) E0137 expression must be a modifiable lvalue
我试着重写成这样
LOBYTE(v8); v8 = v8 & 3;
然后错误消失了,但它似乎不能正常工作。 至于offsub,它根本没有被检测为有效的宏。
你知道我该怎么做吗?
LOBYTE
和 HIBYTE
是执行一些位移逻辑的宏,因此您可以从 unsigned short
中提取特定值。因此,例如,如果您有一个值为 0xAB93
的 unsigned short
,您可以这样获取特定字节:
unsigned char lo = LOBYTE(0xAB93);
unsigned char hi = HIBYTE(0xAB93);
lo
将保存值 0x93
而 hi
将保存值 0xAB
您想使用单独的宏来组合这些值。例如:
unsigned short both = MAKEWORD(lo,hi);
您可以在 IDA_INSTALL_PATH/plugins/defs.h
文件中找到此宏定义。
您可以找到有关 IDA 使用宏的所有信息。