![]() |
#1
|
||||
|
||||
LZMA1 encoder/decoder (ASM+C)
Ask no questions:
This is the core LZMA depacker and compressor code from the private build of my EXE/DLL packer. Figured it might be useful to some people. Decided not to use LZMA2 since that seems to be just focused on format changes and not actual algorithm changes. The depacker code is modified from the original to save size and the main compression function focuses on compression ratio. Example (using lzma.cpp to pack and LzmaDecodeSize.c to depack): Prototype of decoder is: Code:
extern "C" { void LzmaDecode(UInt16* workmem, const unsigned char *inStream, SizeT inSize, unsigned char *outStream, SizeT outSize); } Code:
DWORD compressed; DWORD original_sz; BYTE *Original = Load_Input_File("unpacker.bin", &original_sz); BYTE* compressed_data = compress_lzma(Original, original_sz, &compressed); PVOID testmem = (unsigned char*)malloc(original_sz); unsigned char* workmem = (unsigned char*)malloc(0xC4000); LzmaDecode((UInt16*)workmem, compressed_data + LZMA_PROPS_SIZE, (SizeT)compressed - LZMA_PROPS_SIZE, (unsigned char*)testmem, (SizeT)original_sz); free(Original); free(compressed_data); free(workmem); free(testmem); Last edited by mudlord; 12-10-2015 at 14:34. |
The Following 3 Users Gave Reputation+1 to mudlord For This Useful Post: | ||
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
XED2 (x86 encoder decoder) c++ library | ferrit.rce | General Discussion | 7 | 01-05-2014 07:19 |