app逆向(1)| 为什么要进行app逆向

目录

一、为什么要进行app逆向?

二、了解apk目录

 三、JVM、DVM、ART虚拟机的区别


一、为什么要进行app逆向?

1.为什么要进行app逆向?

比如你看到别人写的某个程序能够做出某种漂亮的动画效果,通过反汇编、反编译和动态跟踪等方法分析出其动画效果的实现过程这种行为就是逆向工程。

2.什么是软件逆向?

软件逆向也叫逆向工程,英文名是reverse engineering,大意是根据已有的东西和结果,通过分析来推导出具体实现方法。

3.逆向工程的应用

  • 辅助软件开发
  • 安全研究
  • 病毒分析
  • 漏洞挖掘。

app逆向(1)| 为什么要进行app逆向_第1张图片

二、了解apk目录

apk就是一个压缩包,运行在Android上的文件。如果我们打开apk压缩文件,apk基本目录是这样的:

app逆向(1)| 为什么要进行app逆向_第2张图片

  • assets目录:静态资源目录,一些图片和静态数据或者icon等等。不会被编译,可以直接用鼠标打开的;

  • lib目录:放一些依赖库,第三方库的,还有开发人员开发的,格式为so文件;

  • META-INF目录: 信息描述,apk签名(做验证)等用途;

  • res目录:工程的资源文件,会被编译。一些重要的资源文件会存放到该目录;

  • AndroidManifest文件:(需要反编译) 用来做组件查找。安卓程序启动的时候例如需要什么权限,什么页面等等比较重要;

  • classes.dex文件: 虚拟机执行的文件。

  • resources.arsc: 资源文件索引。

 三、JVM、DVM、ART虚拟机的区别

了解:

  • JVM虚拟机运行的是.java文件编译后的.class文件。
  • Dalvik虚拟机是在Android4.4之前使用的虚拟机,运行的是.dex文件。apk在打包过程中先将java通过javac编译成.class文件,然后dx将.class文件转成.dex文件供DVM虚拟机运行。
  • ART虚拟机是Android5.0后使用的Android虚拟机。兼职Dalvik虚拟机的特性。

注意:

  • Xposed hook的是java代码,87版Xposed不支持5.0以上版本,89版本Xposed是安卓5.0-7.1

你可能感兴趣的:(APP逆向,android,java,逆向)