dnf123021 发表于 2014-4-16 21:48:01

C语言在结构体地址相加的时候是不是一定要在前面加个DWORD

PIMAGE_DOS_HEADER M_PImage_Dos_Harder=NULL;
PIMAGE_NT_HEADERS M_PImage_Nt_Headers=NULL;
M_PImage_Dos_Harder=(PIMAGE_DOS_HEADER)M_FileMapAddress;
M_PImage_Nt_Headers=PIMAGE_NT_HEADERS((DWORD)M_PImage_Dos_Harder+M_PImage_Dos_Harder->e_lfanew);
为什么在这句代码中一定要把M_PImage_Dos_Harder强制转换成DWORD类型,要是不转换相加后的地址就会出错,要是转换为WORD类型,得到的结果就是M_PImage_Dos_Harder->e_lfanew本身的值。是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?这个问题是看了小甲鱼PE工具篇后的问题,实在搞不懂,求大虾解惑。

向往青莲 发表于 2014-4-16 21:48:02

DWORD * p = 4;
DWORD c = (DWORD)p;
.....所以c.....也等于p的地址。。。
也就是说。。。
DWORD d =(DWORD)* (DWORD*)c;
......d其实等于4

看懂了这个。。你就懂了。。。

dnf123021 发表于 2014-4-16 21:48:43

知道的大虾速度回答下,小弟只有这么点鱼币了,,

dnf123021 发表于 2014-4-18 19:12:29

向往青莲 发表于 2014-4-16 23:46 static/image/common/back.gif
DWORD * p = 4;
DWORD c = (DWORD)p;
.....所以c.....也等于p的地址。。。

那是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?我是菜鸟,高手指教一下~

向往青莲 发表于 2014-4-18 20:03:11

dnf123021 发表于 2014-4-18 19:12 static/image/common/back.gif
那是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?我是菜鸟,高手指 ...

是      ~~

无名侠 发表于 2014-4-18 20:37:13

M_PImage_Nt_Headers=(PIMAGE_NT_HEADERS)((DWORD)M_PImage_Dos_Harder+M_PImage_Dos_Harder->e_lfanew);

dnf123021 发表于 2014-4-21 20:26:27

向往青莲 发表于 2014-4-18 20:03 static/image/common/back.gif
是      ~~

兄弟谢了,鱼币给你~~
页: [1]
查看完整版本: C语言在结构体地址相加的时候是不是一定要在前面加个DWORD