加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 查找原始入口点

发布时间:2020-12-14 05:30:33 所属栏目:Windows 来源:网络整理
导读:我希望能够通过查看PE头来找出出现在入口点的代码的位置. 例如,这段代码是我程序的起始代码(401000h) 00401000 /$58 POP EAX ; kernel32.76E9367700401001 |. 2D 77360100 SUB EAX,1367700401006 |. BB 4A184000 MOV EBX,JMP.kernel32.VirtualProtect 我想知
我希望能够通过查看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)] =原始入口点
由于文件对齐= 200,并且原始入口点位于我的.text部分的最开头,我想我可以将它用于所有可执行文件.

解决了,我在计算原始入口点时犯了愚蠢的错误

.text [入口点 – 虚拟偏移]文件对齐=原始入口点(相对于.text部分)

解决方法

要自己在文件中找到偏移量,您需要查看 _IMAGE_NT_HEADERS结构.从这里你可以得到 IMAGE_OPTIONAL_HEADER在哪里
你对ImageBase感兴趣的成员是.您可以使用EditBin / REBASE更改其值,因此几乎不需要滚动您自己的工具.

有关如何通过dumpbin确定入口点的参考.

您可以使用
dumpbin / headers

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个).
指示图像是否启用ASLR的标志是值0x40,它在DLL特性中设置.

8140 DLL characteristics

例如,对于svchost.exe,它设置为较旧的程序,通常为0.

此致,??Alois Kraus

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读