1.环境

  • java jdk:安卓是基于java环境开发的应用程序,所以开发时需要依赖java环境,同样逆向时也需要。

  • 反编译工具:使用最多的是ApkIDE和AndroidKiller两款工具。这些工具也是集成了以下四个工具。

  • 环境的下载安装,以及配置环境变量什么的,各位可以自行百度。

2.apk文件构成部分

apk文件是安卓手机app的安装格式,它的实质就是一个zip压缩包,可以将apk后缀修改为zip之后看到内部的文件结构。

  • META-INF文件夹:主要存放工程的属性文件。

    • MANIFEST.MF:清单文件(Manifest file)

    • CERT.RSA:保存着该应用程序的证书和授权信息

    • CERT.SF:保存着SHA-1信息资源列表

  • res:apk所需要的资源文件夹

  • AndroidManifest.xml:用于描述该应用程序的名字、版本号、所需权限、注册的服务、链接的其他应用程序。

  • classes.dex:classes文件通过DEX编译后的文件格式,用于在Dalvik虚拟机上运行的主要代码部分。

  • resource.arsc:程序的语言文件。

  • asset:资源目录

3.Dalvik字节码

Dalvik是google为Android操作系统设计的一个虚拟机,经过深度优化。Dalvik VM基于寄存器,有专属的文件执行格式dex(dalcik executable)。通过Dalvik的字节码不能看到原来的逻辑代码,需要借助Apktool、dex2jar、jd-gui来查看。

 

4.smali

smali是安卓系统Dalvik所使用的一种dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,实现了.dex格式的所有功能。当我们对APK文件进行反编译后,便会生成此类文件。

smali中包含很多信息。如

  • .class public Lcom/aaa;

  • 它是com.aaa这个package下的一个类。
  • .super Lcom/bbb;
  • 继承自com.bbb这个类
  • .source/ccc;
  • 这是一个由ccc.java编译得到的smali文件

 

版权声明:本文为Hydrogen2原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Hydrogen2/p/14184046.html