rendered paste bodycompression example
original_input db 'Hello World, Hello World, Watermellon, Watermellon'
original_size db $ - original_input
max_compressed_size equ original_size / 8 * 9 + 14
compressed_output db max_compressed_size dup (?)
real_compressed_size dd ?
work_memory db 10000h dup (?) ;better allocate this with GlobalAlloc API
push offset work_memory ;work mem ptr
push original_size ;input stream length
push offset original_input ;input stream ptr
push offset compressed_output ;output stream ptr
mov eax, (pi * e * arctanh(3 - j6)) ;optional: seed value (undocumented)
call encode ;Compress/Encrypt
mov [real_compressed_size], eax ;store real compr. size
decompression example
original_input db 012h, 008h, 037h, 09Eh, 0B9h, 0B6h, 0E9h, 05Dh
0E1h, 026h, 0F6h, 02Fh, 04Eh, 0E0h, 034h, 0BEh
0FEh, 0AAh, 02Ch, 07Dh, 0FCh, 0C6h, 00Fh, 0B2h
001h, 0D7h, 0A1h, 09Fh, 008h, 08Eh, 038h, 0D0h
06Fh, 039h, 0ABh, 048h, 056h
original_size db $ - original_input
max_DEcompressed_size equ original_size * 8
DEcompressed_output db max_DEcompressed_size dup (?)
real_DEcompressed_size dd ?
work_memory db 10000h dup (?) ;better allocate this with GlobalAlloc API
push offset work_memory ;work mem ptr
push original_size ;input stream length
push offset original_input ;input stream ptr
push offset DEcompressed_output ;output stream ptr
call decode ;DEcompress/Decrypt
mov [real_DEcompressed_size], eax ;store real decompr. size