首页
社区
课程
招聘
如何有效读取PE文件的各个字段,提高效率,有空的,路过的,进来看看。
发表于: 2010-5-18 15:33 3108

如何有效读取PE文件的各个字段,提高效率,有空的,路过的,进来看看。

2010-5-18 15:33
3108
大家都知道PE格式的吧,我想写个工具练练手,就是把各个字段都读出来,类似PEID,LORDPE。

例如读取IMAGE_DOS_HEADER 最后4个字节是PE头(IMAGE_NT_HEADER)的偏移,
00 01 00 00, 读入程序的时候要转化成 0X00000100。 有没有可以提高效率的转换方法啊,我不可能用个循环倒序把一个个字节拼接起来吧?  大家一般是怎么写的啊?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
直接定义4字节的变量。。。dd
2010-5-18 16:13
0
雪    币: 2513
活跃值: (645)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
本身就定义成int型就可以
2010-5-18 17:14
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题是读入的顺序呀!~
2010-5-18 21:16
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
big-endian和little-endian的关系
2010-5-18 21:18
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
OK,我已经找到解决的好办法了,顺便贴出来吧
        #define BigtoLittle32(A)                 ((((uint32)(A) & 0xff000000) >> 24) |
                                                                   (((uint32)(A) & 0x00ff0000) >> 8) |
                                                                   (((uint32)(A) & 0x0000ff00) << 8) |
                                                                   (((uint32)(A) & 0x000000ff) << 24))
2010-5-18 21:23
0
游客
登录 | 注册 方可回帖
返回