Я хочу настроить APK для подсчета количества выполнений его методов обратного вызова (аналогично этому SO post).
Для этого я хочу создать статический класс с нуля (аналогично этому ссылка), в которой хранятся счетные числа. Затем добавьте этот класс в APK и, наконец, настройте начало методов обратного вызова для вызова метода этого статического класса (аналогично этому ссылка).
Я смог сделать то же самое с приложением Java, но не смог сделать это с APK. Вот часть кода, которая генерирует новый SootClass и добавляет его в Scene
:
SootClass staticCls = generateClass("StaticCounter");
Scene.v().addClass(staticCls);
Scene.v().addBasicClass("StaticCounter", SootClass.SIGNATURES);
Scene.v().loadNecessaryClasses();
generateClass
адаптировано из здесь. Но когда я исследовал модифицированный APK, не было никаких признаков StaticCounter
класса. Более того, я установил и запустил модифицированный APK и получил такую ошибку:
08-21 14:15:45.936 19917 19917 E AndroidRuntime:
Caused by: java.lang.ClassNotFoundException:
Didn't find class "StaticCounter" on path:
DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/APKNAME-RdhHiJzxKyyUHh_KCi6RUA==/base.apk"],nativeLibraryDirectories=[/data/app/APKNAME-RdhHiJzxKyyUHh_KCi6RUA==/lib/x86, /system/lib]]
Это просто показывает, что сгенерированный класс не находится внутри APK.
Любое решение этой проблемы?