From d861a85bec77987a7596325ae18989740a602c33 Mon Sep 17 00:00:00 2001 From: Michael Niewoehner Date: Mon, 29 Jan 2018 18:31:50 +0100 Subject: [PATCH] Add whitelist and blacklist for modules but keep -k for backward compatibilty --- me_cleaner.py | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/me_cleaner.py b/me_cleaner.py index c2adf0e..262cdf9 100755 --- a/me_cleaner.py +++ b/me_cleaner.py @@ -153,7 +153,8 @@ def get_chunks_offsets(llut): return offsets -def remove_modules(f, mod_headers, ftpr_offset, me_end): +def remove_modules(f, mod_headers, ftpr_offset, me_end, modules_whitelist, + modules_blacklist): comp_str = ("uncomp.", "Huffman", "LZMA") unremovable_huff_chunks = [] chunks_offsets = [] @@ -177,6 +178,10 @@ def remove_modules(f, mod_headers, ftpr_offset, me_end): if name in unremovable_modules: end_addr = max(end_addr, offset + size) print("NOT removed, essential") + elif name in modules_whitelist or \ + (modules_blacklist and name not in modules_blacklist): + print("NOT removed, whitelisted") + end_addr = max(end_addr, offset + size) else: end = min(offset + size, me_end) f.fill_range(offset, end, b"\xff") @@ -346,7 +351,8 @@ def relocate_partition(f, me_end, partition_header_offset, def check_and_remove_modules(f, me_end, offset, min_offset, - relocate, keep_modules): + relocate, keep_modules, modules_whitelist, + modules_blacklist): f.seek(offset + 0x20) num_modules = unpack(" 0: end_addr = max(end_addr, extra_part_end)