-
-
[原创]学习UPX对pe文件(x64)的加壳过程
-
发表于:
2021-1-31 11:50
18511
-
压缩前
1,将原pe文件按内存展开方式读入ibuf缓冲区,在区块数据后面拼接处理过的原导入表数数组oimport、重定位表orelocs等数据;
2,清空区块数据中的调试目录Debug Directory、清空拷贝到oresources中的不压缩资源数据、重定位地址VA转换成相对rvamin的偏移并清空原重定位表;应该是为了提升压缩率
3,自定义的导入表结构:
4,自定义的重定位表,没有采用相对于每个块VirtualAddress的位移,而是使用相对前一个要处理的重定位地址的偏移
upx压缩
1,Dos头、文件头原样输出,在头部最后添加了upx版本信息;
2,将ibuf中从rvamin开始的数据压缩到obuf,保存到upx1开始的位置;
3,紧接着的是壳代码loader,并作为新的oep;
4,生成新线程局部存储otls;
5,生成新资源表oresources(程序默认图标等资源不能压缩);
6,生成新导入表oimpdlls;
执行壳代码loader
1,将obuf中的数据解压到从upx0开始的位置;
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-1-31 11:54
被kobsky编辑
,原因: