能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不会溢出吧。。应该会转成ULONG 或者LONG
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你觉得一个正常的EXE文件大小会超过4G吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
typedef struct _IMAGE_SECTION_HEADER {
UCHAR Name[IMAGE_SIZEOF_SHORT_NAME];
union
{
ULONG PhysicalAddress;
ULONG VirtualSize;
} Misc;
ULONG VirtualAddress;
ULONG SizeOfRawData;
ULONG PointerToRawData;
ULONG PointerToRelocations;
ULONG PointerToLinenumbers;
USHORT NumberOfRelocations;
USHORT NumberOfLinenumbers;
ULONG Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
本来就是 ULONG 了....可 ULONG 也就 4 字节呀 大于4G 的地址还是记录不下
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
大于 4G 的 .exe 文件确实没见到过...
只是假设出现这种情况怎么办
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
小伙,x64的重定位和x86的不一样,是基于当前地址的
所以x64的重定位极少
比如取一个变量的值,不论这个地址是否高于4GB:
mov rax, [var]
编译为
mov rax, [rip+offset]
offset是基于rip而不是ImageBase
明白了?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
[QUOTE=sidyhe;1351884]小伙,x64的重定位和x86的不一样,是基于当前地址的
所以x64的重定位极少
比如取一个变量的值,不论这个地址是否高于4GB:
mov rax, [var]
编译为
mov rax, [rip+offset]
offset是基于rip而不是ImageBase
明白了?[/QUOTE]
谢谢..
|
|
|