Add support for in-memory decompression #920
Replies: 2 comments 3 replies
Please explain in simpler, step-by-step terms, with examples. UPX deals with fixed-length arrays, not streams. What is the purpose of multiplexing several packed executables into a byte stream? It seems that the same result could be achieved by static binding the executables into one module, then compressing and de-compressing the module. |
There may be licensing issues. UPX contains some software which is offered with the restriction that it may be used only to establish an initial process+memory execution environment from a compressed-by-UPX storage environment; no general runtime usage of pieces of UPX is allowed. From what I understand of your proposal so far, then first you should implement it using zlib instead of UPX. zlib has an actual API, and zlib does process streams as well as files. Multiple streams or files can be active simultaneously, and individual streams can be paused and resumed independently. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hello, I have a fork where I slightly modified the code to support in-memory decompression in support of a python bindings library I'm writing so that I can process multiple byte streams of packed executables and have them decompress to another byte stream.
The changes mostly rely on overriding methods in file.cpp using a pre-processor directive to override the sopen calls. There was one additional modification I had to make p_lx_elf.cpp for the osabi0 variable.
I'm wondering if the UPX team would even entertain a PR like this before attempting to go through the process.
All reactions