Просто для удовольствия, я скачал APK из магазина Amazon (я никогда не использовал его сегодня вечером) и декомпилировал его.Вы не найдете много в манифесте, но внутри дерева smali есть целая папка классов Amazon.Механизмы, которые использует Amazon, в значительной степени превосходят мое очень ограниченное понимание, но я могу указать вам на некоторые данные.
Обновление : для работы приложений требуется установить apk Amazon appstore, чтобы функционировать,поэтому в приведенных ниже классах используется некоторая активность amazon, чтобы проверить наличие в drm.
Method :
$apktool d xxx.apk
$cd xxx/smali
$grep -RHin 'amazon' *
Findings :
Во-первых, вы можете взглянуть на
.class public Lcom/amazon/mas/kiwi/util/ApkHelpers;
с его методами:
.method public static getApkSignature(Ljava/lang/String;)[B
.method private static getCodeSigners(Ljava/util/jar/JarFile;)[Ljava/security/CodeSigner;
.method public static getContentID(Ljava/util/jar/JarFile;)Ljava/lang/String;
.method public static getContentIDFromName(Ljava/lang/String;)Ljava/lang/String;
.method private static getFirstSigningCert(Ljava/util/jar/JarFile;)Ljava/security/cert/Certificate;
.method public static isSigned(Ljava/util/jar/JarFile;)Z
.method private static scanJar(Ljava/util/jar/JarFile;)V
В той же папке com / amazon / mas / kiwi / util есть несколькобольше классов, таких как DeveloperInfo
(не так интересно), Base64
и BC1
(для контрольных сумм).
В папке com / amazon / android / вы найдете классKiwi
.class public final Lcom/amazon/android/Kiwi;
с довольно очевидным полем:
.field private final drmFull:Z
Этот класс Kiwi является ссылками в каждом оригинальном файле smali в приложении.Пример:
.method public onCreate(Landroid/os/Bundle;)V
.locals 1
invoke-virtual {p0, p1}, Lxxx/xxxx/Xxxx;->xxxxXxxxx(Landroid/os/Bundle;)V
const/4 v0, 0x1
invoke-static {p0, v0}, Lcom/amazon/android/Kiwi;->onCreate(Landroid/app/Activity;Z)V
return-void
.end method
Выводы :
Метод включает внедрение кода в каждый класс apk, возможно, путем декомпиляции apk, анализа каждого файла и добавления необходимыхклассов и перекомпиляции с использованием того же ключа.