能力值:
( LV1,RANK:0 )
26 楼
大佬请教下,对于修改压缩数据那里修改第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替换修改哪个文件好呢?
能力值:
( LV2,RANK:10 )
27 楼
感谢
能力值:
( LV5,RANK:78 )
28 楼
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 )
29 楼
luoye_ATL
你可以看下upx3.96/src/stub目录下的Makefile文件,或者在upx3.96/src目录下执行make all,根据命令行输出查看是那个文件生成的arm_v5a_linux_elf_f ...
非常感谢~
能力值:
( LV2,RANK:10 )
30 楼
能不能基于最新的upx写下改法呢
能力值:
( LV1,RANK:0 )
31 楼
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下各个架构的代码流程
能力值:
( LV12,RANK:340 )
32 楼
测试发现给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编辑
,原因:
能力值:
( LV5,RANK:78 )
33 楼
bxc
测试发现给linux可执行文件加壳可以正常工作, 但给so动态库加壳不行, 看源码, 好像还需要修改amd64-linux.elf-so_main.c这个文件来实现so的解密才行.32位ARM好像是需 ...
是的,因为so库和可执行文件的布局有差异,处理文件不一样,我这里只尝试了可执行文件的加壳修改
能力值:
( LV1,RANK:0 )
34 楼
按照文章修改系统一样也报错 是怎么回事尼
能力值:
( LV1,RANK:0 )
35 楼
能不能给一份修改好的源码尼!! 大佬们!!自己改老是出错
能力值:
( LV2,RANK:10 )
36 楼
Vantler
修改i386-linux.elf-main.c文件。可以通过观察armv5的S文件获知。armv5的S汇编码文件是空的,直接以include的方式复用armv4的S文件,所以armv5中调用的C文件代 ...
我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会报segment fault。请教请教?
能力值:
( LV2,RANK:10 )
37 楼
能力值:
( LV2,RANK:10 )
38 楼
骑驴找马
我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会 ...
你改好了吗,我也是一直报错~~
能力值:
( LV1,RANK:0 )
39 楼
骑驴找马
我修改了四处,void PackLinuxElf64::buildLinuxLoader()和void PackLinuxElf32::buildLinuxLoader()同名函数两个都修改了,还是会 ...
详细说说是修改的哪一步发生错误?前面的入口点异或正常执行没错是吗?如果单纯是压缩数据加密部分的错误,我会考虑压缩加密部分有问题,因为loader中只有一行解密代码没有多余实现,要么是前后配合有问题(例如我第一页回复中那个入口点亦或的问题),要么是前面处理逻辑有问题。我自己只遇到过入口点异或/loader两函数两种seg fault情况,其他的没遇到不好说
能力值:
( LV1,RANK:0 )
40 楼
如果是使用Android下的termux如何编译汇编文件呢
能力值:
( LV2,RANK:10 )
41 楼
感谢分享
能力值:
( LV1,RANK:0 )
42 楼
Vantler
详细说说是修改的哪一步发生错误?前面的入口点异或正常执行没错是吗?如果单纯是压缩数据加密部分的错误,我会考虑压缩加密部分有问题,因为loader中只有一行解密代码没有多余实现,要么是前后配合有问题(例 ...
如何在termux更新汇编文件呢
能力值:
( LV1,RANK:0 )
43 楼
请问windows的怎么修改压缩呢?该修改哪个c文件?谢谢
能力值:
( LV1,RANK:0 )
44 楼
mb_onqwmgfo
如何在termux更新汇编文件呢
恐怕需要该那个汇编编译工具的代码,我记得里面直接调用HOME环境变量(或是个啥来着,记不清了)来定位工具位置的,termux里面修改这个变量为你的地址应该就行,但是我没试过不好说
能力值:
( LV1,RANK:0 )
45 楼
咨询下呢,我在重构stub时,提示recipe for target 'upx-stubtools-stamp failed,视乎是找不到这个工具,查了下也确实没有,不知道各位有没有碰到这个问题?
能力值:
( LV1,RANK:0 )
46 楼
有哪位大神能指导下具体怎么重编译stub啊,下载了工具也没用的,谢谢了!!!
能力值:
( LV1,RANK:0 )
47 楼
大佬想问一下最新版本的upx,windwos下的loader怎么修改,我尝试过往amd64-win64.pe.S中直接加汇编,发现加不进去。往amd64-win64.pe.h中的数组直接添加机器码,运行报错bad loader。
能力值:
( LV2,RANK:10 )
48 楼
骑驴找马
我也遇到同样的问题,你改对了吗?
我也是按照这个改了4处还是报segment fault,最新版源码和3.96版试了都不行,各位大佬都测试成功了吗?我的操作系统环境是ubuntu,upx version是:
upx 3.96-git-ERROR+
UCL data compression library 1.03
zlib data compression library 1.3
LZMA SDK version 4.43
Copyright (C) 1996-2020 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2020 Laszlo Molnar
Copyright (C) 2000-2020 John F. Reiser
Copyright (C) 2002-2020 Jens Medoch
Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
Copyright (C) 1999-2006 Igor Pavlov
UPX comes with ABSOLUTELY NO WARRANTY; for details type 'upx.out -L'.
能力值:
( LV2,RANK:10 )
49 楼
DessertTH
我也是按照这个改了4处还是报segment fault,最新版源码和3.96版试了都不行,各位大佬都测试成功了吗?我的操作系统环境是ubuntu,upx version是:
upx 3.96-git ...
解决了,对于大佬们来说,这确实不是个问题,我简单写一下如何解决的,给新手小白一个参考避坑。
按照楼主说的,先对4处进行修改。然后,需要先对stub进行编译,也就是在对amd64-linux.elf-main.cpp进行修改后,需要使用stubtools进行编译,生成新的loader,然后再对compress.cpp和p_lx_elf.cpp进行修改并编译upx,这样,新生成的upx.out就可以正常压缩楼主提供的demo了。
能力值:
( LV1,RANK:0 )
50 楼
Vantler
修改入口点代码的部分,修改.h文件是不行的,或者说只修改那三个部分不行。那个长度常量后面还跟着两个校验值也会变,并且代码长度也不是固定增加5字节,具体取决于编译器生成的bin文件。生成h文件的逻辑在s ...
这个怎么bin2h.py怎么编译src/amd64-linx.elf-fold.S 呢?