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

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

2023-1-7 11:52
42961
收藏
点赞21
打赏
分享
最新回复 (43)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_pf 2023-5-16 16:27
26
0
大佬请教下,对于修改压缩数据那里修改第4个文件的时候,我的CPU架构不是amd64,是armv7l,所以不能修改amd64-linux.elf-main.c。然后我通过调试upx-3.96的源码发现实际用到了stub_arm_v5a_linux_elf_fold.h这个文件,但是在upx-3.96/src/stub/src/目录下没有找到armv5a对应的main.c。所以请教下armv5a架构下,amd64-linux.elf-main.c替换修改哪个文件好呢?
雪    币: 336
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_higyywgo 2023-5-17 09:02
27
0
感谢
雪    币: 1161
活跃值: (1359)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
luoye_ATL 2023-5-21 17:25
28
0
wx_pf 大佬请教下,对于修改压缩数据那里修改第4个文件的时候,我的CPU架构不是amd64,是armv7l,所以不能修改amd64-linux.elf-main.c。然后我通过调试upx-3.96的源码发现实 ...
你可以看下upx3.96/src/stub目录下的Makefile文件,或者在upx3.96/src目录下执行make all,根据命令行输出查看是那个文件生成的arm_v5a_linux_elf_fold.h
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_pf 2023-5-26 13:35
29
0
luoye_ATL 你可以看下upx3.96/src/stub目录下的Makefile文件,或者在upx3.96/src目录下执行make all,根据命令行输出查看是那个文件生成的arm_v5a_linux_elf_f ...
非常感谢~
雪    币: 10012
活跃值: (1649)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wzmooo 2023-5-26 14:29
30
0
能不能基于最新的upx写下改法呢
雪    币: 97
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Vantler 2023-6-20 17:45
31
1
wx_pf 大佬请教下,对于修改压缩数据那里修改第4个文件的时候,我的CPU架构不是amd64,是armv7l,所以不能修改amd64-linux.elf-main.c。然后我通过调试upx-3.96的源码发现实 ...
修改i386-linux.elf-main.c文件。可以通过观察armv5的S文件获知。armv5的S汇编码文件是空的,直接以include的方式复用armv4的S文件,所以armv5中调用的C文件代码和armv4调用的是一致的,所以应当修改armv4的C文件。但是实际上armv4的C也是空的,复用了i386-linux.elf-main.c的代码,所以最终修改目标是i386-linux.elf-main.c。另外可以挨个看下各个文件的内容和包含关系,就可以知道(只讨论linux平台)S汇编码是依据不同架构的32/64位各一份(部分由于差异会单独写一份),而C不依赖架构就只有32/64位的区别(最终对应amd64和i386的两个C),所以修改两个C文件就可以影响linux下各个架构的代码流程
雪    币: 7072
活跃值: (3462)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
bxc 6 2023-7-25 15:48
32
0

测试发现给linux可执行文件加壳可以正常工作, 但给so动态库加壳不行, 看源码, 好像还需要修改amd64-linux.elf-so_main.c这个文件来实现so的解密才行.

32位ARM好像是需要改src/stub/src/arm.v4t-linux.shlib-init.S 这个文件才行.

最后于 2023-7-25 16:06 被bxc编辑 ,原因:
雪    币: 1161
活跃值: (1359)
能力值: ( LV5,RANK:78 )
在线值:
发帖
回帖
粉丝
luoye_ATL 2023-7-27 14:52
33
0
bxc 测试发现给linux可执行文件加壳可以正常工作, 但给so动态库加壳不行, 看源码, 好像还需要修改amd64-linux.elf-so_main.c这个文件来实现so的解密才行.32位ARM好像是需 ...
是的,因为so库和可执行文件的布局有差异,处理文件不一样,我这里只尝试了可执行文件的加壳修改
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
bifa 2023-12-8 17:36
34
0
按照文章修改系统一样也报错 是怎么回事尼
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
bifa 2023-12-10 03:29
35
0
能不能给一份修改好的源码尼!! 大佬们!!自己改老是出错
雪    币: 166
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骑驴找马 2024-1-30 11:58
36
0
Vantler 修改i386-linux.elf-main.c文件。可以通过观察armv5的S文件获知。armv5的S汇编码文件是空的,直接以include的方式复用armv4的S文件,所以armv5中调用的C文件代 ...
我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会报segment fault。请教请教?
雪    币: 166
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骑驴找马 2024-1-30 15:59
37
0
weekend~ 好的,我一会试试,谢谢~
我也遇到同样的问题,你改对了吗?
雪    币: 166
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
骑驴找马 2024-1-30 16:01
38
0
骑驴找马 我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会 ...
你改好了吗,我也是一直报错~~
雪    币: 97
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Vantler 2024-2-18 11:12
39
0
骑驴找马 我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会 ...
详细说说是修改的哪一步发生错误?前面的入口点异或正常执行没错是吗?如果单纯是压缩数据加密部分的错误,我会考虑压缩加密部分有问题,因为loader中只有一行解密代码没有多余实现,要么是前后配合有问题(例如我第一页回复中那个入口点亦或的问题),要么是前面处理逻辑有问题。我自己只遇到过入口点异或/loader两函数两种seg fault情况,其他的没遇到不好说
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_onqwmgfo 2024-3-5 00:19
40
0
如果是使用Android下的termux如何编译汇编文件呢
雪    币: 1382
活跃值: (3100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小希希 2024-3-5 13:24
41
0
感谢分享
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_onqwmgfo 2024-3-6 09:42
42
0
Vantler 详细说说是修改的哪一步发生错误?前面的入口点异或正常执行没错是吗?如果单纯是压缩数据加密部分的错误,我会考虑压缩加密部分有问题,因为loader中只有一行解密代码没有多余实现,要么是前后配合有问题(例 ...
如何在termux更新汇编文件呢
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_whkdnwvj 2024-3-20 18:35
43
0
请问windows的怎么修改压缩呢?该修改哪个c文件?谢谢
雪    币: 97
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Vantler 4天前
44
0
mb_onqwmgfo 如何在termux更新汇编文件呢
恐怕需要该那个汇编编译工具的代码,我记得里面直接调用HOME环境变量(或是个啥来着,记不清了)来定位工具位置的,termux里面修改这个变量为你的地址应该就行,但是我没试过不好说
游客
登录 | 注册 方可回帖
返回