首页
社区
课程
招聘
[原创] UPX源码学习和简单修改
发表于: 2023-1-7 11:52 63374

[原创] UPX源码学习和简单修改

2023-1-7 11:52
63374
收藏
免费 25
支持
分享
最新回复 (54)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
51
luoye_ATL 用vmtest师傅提到的工具就可以,根据说明配置好之后,编译的时候类似amd64-linux.elf-fold.h的.h文件都会重新生成的。
怎么配置的呢?能详细说一下吗?
2024-11-22 10:52
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
52
DessertTH 解决了,对于大佬们来说,这确实不是个问题,我简单写一下如何解决的,给新手小白一个参考避坑。 按照楼主说的,先对4处进行修改。然后,需要先对stub进行编译,也就是在对amd64-linux.elf- ...
能压缩别的程序吗?
2024-11-22 10:55
0
雪    币: 107
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
53
amd64-linx.elf-fold.S的编译和bin2h无关。应该说这是独立的两步。第一步先是把S文件编译,得到bin文件,这个是可执行的代码,要捆绑到加壳后的程序中,在执行时被调用,解压数据。那要怎么把它捆绑进去呢?答案是第二部,用bin2h,将这个编译得到的bin文件转换成16进制码,存到一个大数组里,然后把这个数组的定义放到h文件中,编译upx的时候直接调用这个数组就等同于调用解压代码(shellcode就是这么存的)。那几个变量就是用来标记和检查这个数组数据的。如果你想编译S文件,得用前面评论里提到的那个stub工具,编译完工具就会自动调bin2h生成新的h文件。
2025-4-8 10:06
0
雪    币: 275
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
54
Vantler 楼主好!我在根据您的文章进行代码修改和复现过程中,发现一个问题,分享出来供参考。问题出现在修改入口点代码的loader部分。文章中loader异或key的位置在汇编码中,根据注释是将upx_main函 ...
分析的太有用啦,踩到了一模一样的坑,感谢分享
2025-4-10 16:43
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
55
找到amd64-linux.elf-so_main.c 文件中的 unpackExtent 函数,在函数中找到 int const j = (*f_exp)((unsigned char *)xi->buf, h.sz_cpr,   (unsigned char *)xo->buf, &out_len);在后面增加如下代码,对so进行加壳即可用,其他的按照博主的可以,本人已经在4.3版本上复现
 unsigned char *tmp=(unsigned char*)xo->buf;
            size_t i = 0;
             for(i = 0; i < h.sz_unc; i++)
            {
               *tmp=(*tmp)^0xe9;
               tmp = tmp + 1;
             }
2025-4-29 17:20
0
游客
登录 | 注册 方可回帖
返回