Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4615496
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T01:50:53+00:00 2026-05-22T01:50:53+00:00

I know you can decompile code using apktool and recompile it again, but my

  • 0

I know you can decompile code using apktool and recompile it again, but my question is how would you be able to inject large amounts of code into an apk and execute it.

I see that amazon’s appstore drm is doing this Im assuming, since they say they are wrapping the apk with their own code, and once you decompile that apk you see that they have added there own class com.amazon etc.

How are they acheving this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T01:50:54+00:00Added an answer on May 22, 2026 at 1:50 am

    Just for the fun of it, I downloaded an apk from the Amazon store (I never used it before tonight) and decompiled it. You won’t find much in the manifest, but there’s a whole folder of Amazon classes inside the smali tree. The mechanisms that Amazon uses largely exceed my very limited understanding, but I can point you to some data.

    Update: the apps require the Amazon appstore apk to be installed in order to function, so the classes below uses some amazon activity to check for the drm.

    Method:

    $apktool d xxx.apk
    $cd xxx/smali
    $grep -RHin 'amazon' *
    

    Findings:

    First, you might want to take a look at

    .class public Lcom/amazon/mas/kiwi/util/ApkHelpers;
    

    with its methods:

    .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
    

    In the same com/amazon/mas/kiwi/util folder there are a few more classes, such as DeveloperInfo (not that interesting), Base64 and BC1 (for checksums).

    In the folder com/amazon/android/, you will find the class Kiwi

    .class public final Lcom/amazon/android/Kiwi;
    

    with a quite obvious field:

    .field private final drmFull:Z
    

    That class Kiwi is references in every original smali file in the app. Example:

    .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
    

    Conclusions:

    The method involves injecting code in every class of the apk, probably through decompiling the apk, parsing each file, adding the necessary classes, and recompiling using the same key.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know I can do most of this by hacking Trac and using Git
I know you can look at the row.count or tables.count, but are there other
I know you can do redirection based on the domain or path to rewrite
I know I can programatically make the taskbar item for a particular window start
I know I can call the GetVersionEx Win32 API function to retrieve the Windows
I know I can figure out the name of the method as its being
I know I can specify one for each form, or for the root form
I know I can do this: IDateTimeFactory dtf = MockRepository.GenerateStub<IDateTimeFactory>(); dtf.Now = new DateTime();
I know I can get the public static members of a class by doing
I know I can add a icon to the Resources.resx file of a project

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.