windows – 查找原始入口点
我希望能够通过查看PE头来找出出现在入口点的代码的位置.
例如,这段代码是我程序的起始代码(401000h) 00401000 >/$58 POP EAX ; kernel32.76E93677 00401001 |. 2D 77360100 SUB EAX,13677 00401006 |. BB 4A184000 MOV EBX,<JMP.&kernel32.VirtualProtect> 我想知道这段代码的来源.如何在不手动扫描文件的情况下找到它? (为了完成示例,这里是来自同一文件的hexdump,代码现在位于200h) Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00000200 58 2D 77 36 01 00 BB 4A 18 40 00 如何从虚拟入口点(401000h)到原始入口点(200h)? .text [入口点(1000h) – VirtualOffset(1000d)] =原始入口点 解决了,我在计算原始入口点时犯了愚蠢的错误 .text [入口点 – 虚拟偏移]文件对齐=原始入口点(相对于.text部分) 解决方法
要自己在文件中找到偏移量,您需要查看
_IMAGE_NT_HEADERS结构.从这里你可以得到
IMAGE_OPTIONAL_HEADER在哪里
你对ImageBase感兴趣的成员是.您可以使用EditBin / REBASE更改其值,因此几乎不需要滚动您自己的工具. 有关如何通过dumpbin确定入口点的参考. 您可以使用 dumpbin /headers Windowsbfsvc Dump of file Windowsbfsvc.exe PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C machine (x86) 4 number of sections 4A5BBFB3 time date stamp Tue Jul 14 01:13:55 2009 0 file pointer to symbol table 0 number of symbols E0 size of optional header 102 characteristics Executable 32 bit word machine OPTIONAL HEADER VALUES 10B magic # (PE32) 9.00 linker version DE00 size of code 2000 size of initialized data 0 size of uninitialized data 4149 entry point (01004149) 1000 base of code F000 base of data 1000000 image base (01000000 to 01011FFF) 1000 section alignment 200 file alignment 对于入口点,图像基值是相关的.但这仅适用于未启用ASLR的图像.对于他们,选择随机基地址(128个不同的地址中的1个). 8140 DLL characteristics 例如,对于svchost.exe,它设置为较旧的程序,通常为0. 此致,??Alois Kraus (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 无法检索目录列表
- 如何在windows xp上使用svn命令行?
- CMPT6:如何为Primary Site下各Site system role
- 我应该从Windows代码中删除TCHAR吗?
- windows-server-2003 – RDP到Windows 2003导致空白屏幕
- windows – 帐户锁定
- windows – 如何防止WiX在修补时删除注册表项
- microsoft-graph – Microsoft Graph API:403尝试在租户上
- windows-installer – 将MSIUSEREALADMINDETECTION添加到MS
- 监控 – 如何监控Windows 2008服务器上的磁盘IO负载?