exe取消动态基址
动态基址开启后,在动态调试是想要和ida静态分析中的地址对应还要进行一步计算,取消动态基址便可以剩下很多时间。
只要修改pe文件头中的Characteristics低位置1
1 typedef struct _IMAGE_FILE_HEADER { 2 WORD Machine; ** 机器号 相对该结构的偏移0x00** 3 WORD NumberOfSections; ** 节区数量 相对该结构的偏移0x02** 4 DWORD TimeDateStamp; ** 时间戳 相对该结构的偏移0x04** 5 DWORD PointerToSymbolTable; ** 符号表偏移 相对该结构的偏移0x08** 6 DWORD NumberOfSymbols; ** 符号表数量 相对该结构的偏移0x0C** 7 WORD SizeOfOptionalHeader; ** 可选头大小 相对该结构的偏移0x10** 8 WORD Characteristics; ** PE文件属性 相对该结构的偏移0x12** 9 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
Characteristics可以是下面一个或者多个值的和
宏定义 | 数值 | 描述 |
---|---|---|
IMAGE_FILE_RELOCS_STRIPPED | 0x0001 | 从文件中删除了重定位信息 |
IMAGE_FILE_EXECUTABLE_IMAGE | 0x0002 | 该文件是可执行的 |
IMAGE_FILE_LINE_NUMS_STRIPPED | 0x0004 | COFF行号从文件中删除 |
IMAGE_FILE_LOCAL_SYMS_STRIPPED | 0x0008 | COFF符号表条目从文件中删除 |
IMAGE_FILE_AGGRESIVE_WS_TRIM | 0x0010 | 废弃 |
IMAGE_FILE_LARGE_ADDRESS_AWARE | 0x0020 | 该应用程序可以处理大于2GB的地址 |
IMAGE_FILE_BYTES_REVERSED_LO | 0x0080 | 废弃 |
IMAGE_FILE_32BIT_MACHINE | 0x0100 | 32位机器 |
IMAGE_FILE_DEBUG_STRIPPED | 0x0200 | 调试信息已删除并单独存储在另一个文件中 |
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP | 0x0400 | 如果在移动介质中,拷到交换文件中运行 |
IMAGE_FILE_NET_RUN_FROM_SWAP | 0x0800 | 如果在网络中,拷到交换文件中运行 |
IMAGE_FILE_SYSTEM | 0x1000 | 该文件是一个系统文件 |
IMAGE_FILE_DLL | 0x2000 | 该文件是一个文件是一个动态链接库 |
IMAGE_FILE_UP_SYSTEM_ONLY | 0x4000 | 该文件应仅在单处理器计算机上运行 |
IMAGE_FILE_BYTES_REVERSED_HI | 0x8000 | 废弃 |
pe修改的工具很多,我用的peid