重定位是由操作系統(tǒng)安排的。在裝入程序前,會計算未使用的內(nèi)存,然后將程序裝入,并記下開始地址。在執(zhí)行有相對地址的指令時,會將所有的地址加個剛才記下的開始地址,就叫重定位。重定位與EXE文件無關(guān)。
一般來說,重定位主要用被脫殼后的DLL文件,因為文件被某些殼加殼后,會對DLL文件產(chǎn)生一定得保護作用,可能將DLL文件的某些數(shù)據(jù)轉(zhuǎn)移了。在脫殼后程序因為原來的DLL文件加殼產(chǎn)生保護作用,因此有可能不能正常運行,所以要脫殼后的數(shù)據(jù)重新定位正常的狀態(tài)。