Winapi 为什么可移植可执行文件的大部分是';hexdump在转换为文本时通常是不可读的,为什么其中一些是可读的?

Winapi 为什么可移植可执行文件的大部分是';hexdump在转换为文本时通常是不可读的,为什么其中一些是可读的?,winapi,hexdump,portable-executable,Winapi,Hexdump,Portable Executable,我将各种PE放在一个十六进制编辑器中,搜索字符串(主要是Windows函数),这有助于理解PE的功能和任何其他细节,而无需执行它 在DOS存根之后,大多数情况下,无论是正版还是恶意可执行文件,hexdump的大部分(转换为文本)都是不可读的,例如: L.µ¸°5Sÿ|.iÞôS..\C>Ó\—©>Ó.Òg.¼·+ß»–å~.2W·ÿ¸¨x:_/..²Üo(è.XX<.¯”ˆNYîk•…ùJ¹¬£oXR¾ëè.,X°`Á‚...,X(O.㣿¨P.ñ~p{澯ª°y”…Š}6

我将各种PE放在一个十六进制编辑器中,搜索字符串(主要是Windows函数),这有助于理解PE的功能和任何其他细节,而无需执行它

在DOS存根之后,大多数情况下,无论是正版还是恶意可执行文件,hexdump的大部分(转换为文本)都是不可读的,例如:

L.µ¸°5Sÿ|.iÞôS..\C>Ó\—©>Ó.Òg.¼·+ß»–å~.2W·ÿ¸¨x:_/..²Üo(è.XX<.¯”ˆNYîk•…ùJ¹¬£oXR¾ëè.,X°`Á‚...,X(O.㣿¨P.ñ~p{澯ª°y”…Š}6…쥒{jæiö³ëêÃaûþ*ýþž.š¼AÇG(’ÅNÔ™¾=...øí>üÒGÂ.sŽÃyÈ9.ï×Ç.QgÄ™€·Sâð.Þ¾…=}.¾TQO:à}úÂ.L7.˜Sp>.(.Ó.d¥ñ—ñyøÜ¡;í¦ðìÐ9Dç.:‡é.¡s%.«è</Åï.O¯H.ÀÛìç ´$”yÊ©ƒ9§QøCü.<I8.N.ð².¨8.\$àù8ü!æ°³Îy.(J8õtÞ.ï§Æ‰÷!.£ÛPN7ð󸱜z86á.²p¬‡4k!Õ&J±.RD!M.èMЬÝzâ.ÓÄ)M.§Âo.$ –.¸:㣤.î%5m@ï8]#5qM-ÅȤ™Ï‚—b¤...¿5.…._ÁÂùŠ»xßçvÚá™-—æ.ŠM<gS.ã.íGZÏ.:WÓ¹†Î.鼈Î7Ñy1.—Ðùf¾Æœ
这个XML部分:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Nullsoft.NSIS.exehead" type="win32"/><description>Nullsoft Install System v2.46.5-Unicode</description><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges></security></trustInfo><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/></application></compatibility></assembly>
Nullsoft安装系统v2.46.5-Unicode
什么决定了哪些部分可读,哪些部分不可读?我假设可以提取windows函数,因为它是与操作系统交互的东西,而不是本地使用并由开发人员创建的东西


为什么不可读的部分是不可读的?当我第一次看到它时,我认为它是加密的/打包的/模糊的。现在我在想,这是不是开发人员故意做的事情?如上所述,我在恶意和正版PEs中都看到了相同的模式

可读部分将是字符串、导入的函数名、文本资源(如XML应用程序清单)等,但大多数可执行文件往往是机器代码。这是二进制数据,不是文本


这是完全正常的,也是意料之中的。这里没有加密或混淆的证据。

二进制图像中没有不可读的内容。你只是强加了一种解释,这毫无意义。另请参见:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Nullsoft.NSIS.exehead" type="win32"/><description>Nullsoft Install System v2.46.5-Unicode</description><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges></security></trustInfo><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/></application></compatibility></assembly>