test scripts
This commit is contained in:
parent
a0ecb1a18d
commit
af49057c04
3 changed files with 44 additions and 0 deletions
42
tests/dump_class_names.py
Normal file
42
tests/dump_class_names.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import logging
|
||||
|
||||
FORMAT = "[%(levelname)s] %(name)s %(filename)s:%(lineno)d: %(message)s"
|
||||
logging.basicConfig(format=FORMAT)
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
|
||||
import json
|
||||
import zipfile as z
|
||||
import re
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
|
||||
from androscalpel import Apk, IdType, IdMethodType, ins, DexString, IdMethod, Code, utils # type: ignore
|
||||
|
||||
RE_CHECK_DEXFILE = re.compile(r"classes\d*.dex")
|
||||
|
||||
|
||||
def is_dexfile(filename: str) -> bool:
|
||||
return bool(RE_CHECK_DEXFILE.fullmatch(filename))
|
||||
|
||||
|
||||
def load_apk(path_apk: Path) -> Apk:
|
||||
print(f"[+] Load bytecode ")
|
||||
apk = Apk()
|
||||
with z.ZipFile(path_apk) as zipf:
|
||||
for file in filter(is_dexfile, zipf.namelist()):
|
||||
print(f"[-] {file}")
|
||||
with zipf.open(file, "r") as dex_f:
|
||||
dex = dex_f.read()
|
||||
apk.add_dex_file(dex)
|
||||
return apk
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser("Dump the name of classes defined in an apk")
|
||||
parser.add_argument("apk", type=Path)
|
||||
args = parser.parse_args()
|
||||
apk = load_apk(args.apk)
|
||||
cls = list(map(str, apk.classes.keys()))
|
||||
cls.sort()
|
||||
for cl in cls:
|
||||
print(str(cl))
|
||||
Loading…
Add table
Add a link
Reference in a new issue