• Android应用程序反编译


          让我们先来认识下APK文件. Android的应用程序包为扩展名为.apk文件, 无论你是从手机市场里下载, 还是电脑中下载.  都是这类APK文件.  APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别.

    android

    一个APK文件解压开通常有这样的文件夹:

    • META-INF 目录:
      • MANIFEST.MF: manifest文件
      • CERT.RSA: 应用程序证书
      • CERT.SF: SHA-1资源签名列表. 例如:
     Signature-Version: 1.0
     Created-By: 1.0 (Android)
     SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=
     ...
     Name: res/layout/exchange_component_back_bottom.xml
     SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=
     ...
     Name: res/drawable-hdpi/icon.png
     SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=

    • lib
      : 这个目录包含某些特定编译代码, 这个文件夹分成下面这些
      • armeabi: 只基于所有ARM处理器的编译代码.
        armeabi-v7a: 所有ARMv7处理器的编译代码
      • x86: 仅针对x86处理器的编译代码
      • mips: 为MIPS处理器的编译代码
    • res: 包含资源的目录不编译到资源文件,看下面:
    •   assets: 包含应用程序的资产,可以通过AssetManager进行检索.
    • AndroidManifest.xml: 包含应用程序的元数据文件,描述名称、版本、访问权限、引用应用程序的库文件。此文件在Android二进制格式, 可被工具转化为可读的纯文本XML工具,如   AXMLPrinter2,apktool,或Androguard。设置,可以通过AssetManager进行检索
    • classes.dex: Dalvik字节码
    • resources.arsc : 一个包含预编译资源文件,如二进制的XML. 

    有两种方法反编译APK, 如果是为了汉化程序, 可以使用apktool:

    安装过程
     
    1.下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-brut1.tar.bz2
    2.把两个文件都解压放在同一个目录,共三个文件
    aapt.exe
    apktool.bat
    apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。

    在命令行执行:

    apktool d d:\xxx.apk d:\xxx

    xxx 为你的输出目录,  然后你就可以看一些xml的资源文件, 以及Smali文件. 如下图某APK文件反编译输出目录:

    deAndroidDir

    Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能.


    你可以使用dex2jar, 下载后解压, 直接把apk文件拖到dex2jar.bat文件上,就可以生成对应*.jar文件,这时使用JD-GUI, 打开jar文件,就可以看到java源码,同时可以导出.

    jdgui


    由此可见,Android应用程序反编译并不难, 加密与解密的斗争一直会持续.

    您可能感兴趣的文章:

    Mono for Android 优势与劣势


    作者:Petter Liu
    出处:http://www.cnblogs.com/wintersun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    该文章也同时发布在我的独立博客中-Petter Liu Blog

  • 相关阅读:
    codevs 3049 舞蹈家怀特先生
    洛谷P2530 [SHOI2001]化工厂装箱员
    洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
    Phalanx
    Treats for the Cows
    Very Simple Problem
    Alice and Bob
    FatMouse and Cheese
    Tickets
    Piggy-Bank
  • 原文地址:https://www.cnblogs.com/wintersun/p/2985498.html
Copyright © 2020-2023  润新知