Я хотел бы реализовать проверку безопасности — проверку подписи приложения (или файла dex), чтобы убедиться, что немодифицированное приложение использует мою общую библиотеку (* .so) сборки с NDK. Я хотел бы выполнить все проверки подписи непосредственно в C ++, без Java. В настоящее время я узнал, что можно получить доступ к файлу apk здесь: /data/app/—1/base.apk. Я полагаю, что из файла apk можно получить содержимое исходного файла dex, возможно, даже без извлечения, поскольку файл apk выровнен.
Я говорю оригинальный dex-файл, потому что, если я правильно понимаю (и поправляю меня, если я ошибаюсь), dex-файл преобразуется в общий объект ELF, когда установлен apk — двоичный исполняемый файл, специфичный для архитектуры устройства. По этой причине мне не удалось проверить / проверить подпись файла * .dex, указанного в / proc / self / maps (пример: /data/dalvik-cache/x86/data@[email protected]@base .apk @ classes.dex), поскольку невозможно узнать сигнатуру во время компиляции, поскольку файл dex будет изменен.
Я знаю, что метод проверки исходного файла dex не очень безопасен, потому что я думаю, что его можно легко обойти на рутированном устройстве, заменив оптимизированный файл dex — просто запустите dex2oat в пользовательском файле dex и поместите его в (/ data / dalvik-cache /. ..).
Я не могу придумать, как это сделать.
Я могу думать о нескольких (и они все безумны как шляпник):
Это может дать сбой таким глупым людям, как я, которые используют устройства на базе Intel.
Других решений пока нет …