test scripts
This commit is contained in:
parent
a0ecb1a18d
commit
af49057c04
3 changed files with 44 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -7,3 +7,4 @@
|
|||
*.dex
|
||||
*.idsig
|
||||
*.jks
|
||||
/tests
|
||||
|
|
|
|||
1
TODO.md
1
TODO.md
|
|
@ -2,3 +2,4 @@
|
|||
- tests
|
||||
- https://source.android.com/docs/core/runtime/dex-format#system-annotation
|
||||
- goto size computation
|
||||
- ord in python
|
||||
|
|
|
|||
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