首页
社区
课程
招聘
[原创]也谈PE重定位表
发表于: 2011-9-28 16:13 13760

[原创]也谈PE重定位表

2011-9-28 16:13
13760

最近研究脱壳,遇到了dll,所以不可避免的需要修复重定位表。以前研究过也脱过不少壳,但都是exe从来没有手工修过重定位表,
于是搜索之,恩有这么一篇:《PE重定位表学习手记》,有刚巧手上有看雪段钢等编著的《加密与解密》,一并阅读。

《PE重定位表学习手记》中说到:

    每个块的首部是如下定义:
    typedef struct _IMAGE_BASE_RELOCATION {
    DWORD VirtualAddress;
    DWORD SizeOfBlock;
    } IMAGE_BASE_RELOCATION;

    ……

    这个可由每个块结构中的Size来确定。Size的值是以DWORD表示的当前整个块的大小,先减去IMAGE_BASE_RELOCATION的大小,
    因为重定位数据是16位WORD的,再除以2,就得到个重定位数据的个数。由Size可以直接到达下一个重定位块,如图所 示:
    0x5E850000+0x000000EC=0x5E8500EC即为第二个重定位块的地址,直至某个块首结构的VirtualAddress为 0,表明重定位表结束。

    ……

    do
    {//处理一个接一个的重定位块,最后一个重定位块以RAV=0结束

    ……

    }while (pRelocBlock->VirtualAddress);

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (2)
雪    币: 154
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
友情顶礼膜拜
2011-9-28 16:18
0
雪    币: 220
活跃值: (156)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
顺便一提,win7 x64似乎对padding zero作了处理,没有这个问题
2011-9-28 16:21
0
游客
登录 | 注册 方可回帖
返回
//