jin*_*ong 0 windows file-format hex-editor hexdump
当我打开一个二进制文件(在本例中是C:\\Windows\\System32\\notepad.exe
)时,对于同一个文件,不同的十六进制编辑器彼此显示不同的结果。我在节头的起始点测试了它,所以注意2E 74 65 78 74 00 00 00
( ".text..."
)的起始地址。
这些是不同的文件。
从什么时候开始 System32 不是 System32?【强调我的】:
在 32 位 Windows 中,只有一个
System32
文件夹包含许多本机二进制文件(或硬链接),并且无法在 32 位 Windows 上执行 64 位代码。但是,对于 64 位 Windows,我们有“Windows On Windows 64”(WOW64),它允许 32 位进程通过包装器运行,在这种情况下需要考虑一些事项:
只有 32 位 DLL 可以加载到 32 位进程中,并且只有 64 位 DLL 可以加载到 64 位进程中。
[…]32 位进程希望在 64 位 Windows 上无缝运行,因此由于 (1) 我们需要同时拥有某些二进制文件的 32 位和 64 位版本。
[…]为了促进 (2) 但不破坏本机 (x64) 进程的行为,32 位进程会在不知情的情况下重定向某些 I/O。
[…][…]
对于在 x64 Windows 上运行的 32 位进程:
-%systemroot%\System32
被重定向到%systemroot%\SysWOW64
[…]
我的猜测是一些十六进制编辑器是 32 位并被重定向到SysWOW64
,有些是 64 位并看到“真实” System32
。不同的编者感知不同System32
,因而也不同notepad.exe
。
如果您复制notepad.exe
到不受影响的文件夹并分析该副本,则所有编辑器将显示相同的内容。你会看到哪个文件?这取决于复制工具是 32 位还是 64 位。
归档时间: |
|
查看次数: |
261 次 |
最近记录: |