dll文件的脱壳与exe文件步骤差不多,所不同的是,DLL文件多了个基址重定位表等要考虑。在2003年出版的《加密与解密》(第二版)中以UPX,PECompact为例讲述了DLL重定位重建的方法,由于本人的思路限制,当时只是从UPX,PECompact自身特点找思路解决这问题,即先分析UPX,PECompact对重定位表处理算法,然后写工具逆算法还原重定位表,如UPXAngela.exe等工具。这种思路的通用性不好,针对不同的壳和版本,要重写工具,并且逆算法可能不完美,从而存在bug。后来,askformore在“重建重定位表脚本”一文中,提出了一种更通用性的解决办法,利用外壳重定位相关数据时,会根据外壳转储的重定位表确定要重定位的RVA,完成代码重定位工作。将这些要重定位的RVA提取出来,再将这些RVA根据重定位表的定义重新生成一份新的重定位表。shoooo也曾提到过这个思路。于是,在第三版重写这部分时,根据这个思路写了ReloREC工具来完成这个重建功能。另外,ReloREC重构重定位表的算法代码,参考了ccfer在看雪论坛.珠海金山2007逆向分析挑战赛 第二阶段第三题 提交的代码。在此一并表示感谢!