首页
社区
课程
招聘
[原创]学习UPX对pe文件(x64)的加壳过程
发表于: 2021-1-31 11:50 18511

[原创]学习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编辑 ,原因:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 2166
活跃值: (3226)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
之前论坛内upx的内容多关注于脱壳的过程,但对upx加壳的过程少有提及,楼主的文章可以作为不错的补充,谢谢分享
2021-1-31 21:11
0
雪    币: 40
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
相当相当好,感谢分享
2021-1-31 21:49
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
坛里有你更精 ,感谢分享
2021-2-1 01:46
0
雪    币: 6064
活跃值: (12624)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
5
幸苦
2021-2-2 08:50
0
雪    币: 8447
活跃值: (5041)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
真的详细,先码住等有空了慢慢看
2021-2-5 00:32
0
雪    币: 202
活跃值: (151)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2021-2-13 00:59
0
雪    币: 14
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢分享
2021-2-26 17:01
0
游客
登录 | 注册 方可回帖
返回
//