我将各种PE放到一个十六进制编辑器中,并搜索字符串(主要是Windows函数),这些字符串可用于理解PE执行的操作以及有关它的任何其他细节,而不执行它。为什么便携式可执行文件的hexdump的大部分在转换为文本时通常无法读取,并且为什么一些文本可读?
的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.$ –.¸:㣤.î%[email protected]ï8]#5qM-ÅȤ™Ï‚—b¤...¿5.…._ÁÂùŠ»xßçvÚá™-—æ.ŠM<gS.ã.íGZÏ.:WÓ¹†Î.鼈Î7Ñy1.—Ðùf¾Æœ
然后某处很多之间像这样的的Windows函数块线可以看出:
ime...SearchPathW.a.GetShortPathNameW.û.GetFullPathNameW..c.MoveFileW.M.SetCurrentDirectoryW..ê.GetFileAttributesW....GetLastError....CreateDirectoryW..a.SetFileAttributesW..².Sleep.“.GetTickCount..ð.GetFileSize...GetModuleFileNameW..À.GetCurrentProcess.u.
而这个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>
什么决定哪些部件可读,哪些不可读?我假设可以提取windows函数,因为它是与OS交互的东西,而不是由开发人员在本地使用的东西。
为什么不可读部分不可读?当我首先看到它时,我认为它是加密/打包/混淆的。现在我在想,这是开发者故意不做的事情吗?如前所述,我在恶意和真实的PE中看到了相同的模式。
二进制图像中的任何内容都是不可读的。你只是对它进行解释,这是没有意义的。 – IInspectable