March 1, 2022

关于逆向工程核心原理-基址重定位表

(简称逆向工程核心原理第十六章学习)

每个PE文件都有本身的imagebase,但当同一个类型文件的基地址是相同,就要发生基地址重定位问题。

image-20220301150644781

由于Vista之后引入了ASLR安全机制,每次运行程序会发现基地址都不一样。

(系统的DLL有自己的固定基地址所以实际不会发生重定位问题,如kernel32.dll等)

这里来学习下PE文件的基地址重定位表

image-20220301151440310

IMAGE_BASE_RELOCATION

1
2
3
4
5
6
typedef struct _IMAGE_BASE_RELOCATION
{
DWORD VirtualAddress; // 基准地址
DWORD SizeOfBlock; // 块大小
// WORD TypeOffset[1]; // 以注释形式存在我不太理解,就是放那些待修改的偏移值
} IMAGE_BASE_RELOCATION;

拿书上整理好的

image-20220301152245361

如何看offset值

还要注意下如何看后面offset的值

image-20220301152404987

可以看下文件中1420所留的值,存放着原内存基址的IAT值

image-20220301162810995

同时可以dbg到里面的IAT已经改变成随机的基地址

image-20220301162910266

DASCTF X SU
🍬
HFCTF2022
🍪

About this Post

This post is written by P.Z, licensed under CC BY-NC 4.0.