Module refinery.units.compression.ap
Expand source code Browse git
from __future__ import annotations
from refinery.lib.fast.aplib import aplib_compress, aplib_decompress
from refinery.units import Unit
__all__ = ['aplib']
class aplib(Unit):
"""
APLib compression and decompression.
A lossless compression library frequently used by packers and malware for executable
compression.
"""
def reverse(self, buf):
return aplib_compress(buf)
def process(self, buf):
view = memoryview(buf)
size = 0
if view[:4] == B'AP32':
size = int.from_bytes(buf[4:8], 'little')
if size > 0x80:
size = 0
else:
self.log_info(F'detected aPLib header of size {size}')
return bytes(aplib_decompress(view[size:]))
@classmethod
def handles(cls, data):
if len(data) < 2:
return False
if data[:4] == B'AP32':
return True
return None
Classes
class aplib-
APLib compression and decompression.
A lossless compression library frequently used by packers and malware for executable compression.
Expand source code Browse git
class aplib(Unit): """ APLib compression and decompression. A lossless compression library frequently used by packers and malware for executable compression. """ def reverse(self, buf): return aplib_compress(buf) def process(self, buf): view = memoryview(buf) size = 0 if view[:4] == B'AP32': size = int.from_bytes(buf[4:8], 'little') if size > 0x80: size = 0 else: self.log_info(F'detected aPLib header of size {size}') return bytes(aplib_decompress(view[size:])) @classmethod def handles(cls, data): if len(data) < 2: return False if data[:4] == B'AP32': return True return NoneAncestors
Subclasses
Inherited members