mirror of
https://github.com/MG1937/ASC.git
synced 2026-10-16 05:09:56 +08:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
import os
|
|
import time
|
|
|
|
from core.dex.dex_manager import DexManager
|
|
from utils.decompiler import decompile_dex_bytes
|
|
|
|
SAMPLE = "classes5.dex"
|
|
|
|
# Initialize manager once, as it loads the DEX file which is heavy
|
|
manager = DexManager(SAMPLE, debug=False)
|
|
|
|
testcases = []
|
|
with open("testcase.txt", "r") as f:
|
|
for line in f:
|
|
line = line.strip()
|
|
if line:
|
|
testcases.append(line)
|
|
|
|
print(f"[INFO] Loaded {len(testcases)} testcases.")
|
|
|
|
total_time = 0
|
|
success_count = 0
|
|
|
|
for i, clazz in enumerate(testcases):
|
|
try:
|
|
t_start = time.perf_counter()
|
|
|
|
new_dex = manager.extract_and_rebuild(clazz)
|
|
# source_code = decompile_dex_bytes(new_dex, clazz)
|
|
|
|
t_end = time.perf_counter()
|
|
|
|
# print(source_code)
|
|
|
|
exec_time = (t_end - t_start) * 1000000
|
|
total_time += exec_time
|
|
success_count += 1
|
|
|
|
if (i + 1) % 100 == 0:
|
|
print(f"[INFO] Processed {i + 1}/{len(testcases)} classes...")
|
|
|
|
except Exception as e:
|
|
print(f"[ERROR] Failed to process {clazz}: {e}")
|
|
|
|
if success_count > 0:
|
|
avg_time = total_time / success_count
|
|
print(f"\n[RESULT] Total Successful: {success_count}/{len(testcases)}")
|
|
print(f"[RESULT] Average Execution Time per class: {avg_time:.2f} us")
|
|
print(f"[RESULT] Total Execution Time for {success_count} classes: {total_time / 1000000:.4f} s")
|
|
else:
|
|
print("\n[RESULT] All testcases failed.")
|
|
|