安卓逆向-预备工具 | Java基本知识 | 安卓软件包:APK

预备工具

JAVA环境:
官方下载安装地址: https://www.oracle.com/technetwork/java/javase/downloads/index.html
apktool:
https://ibotpeaches.github.io/Apktool/
是apktool.jar 要安装Java环境才能运行
windows下设置环境变量 后 可以用 apktool 命令
JADX:
https://www.softpedia.com/get/Programming/Other-Programming-Files/Jadx.shtml
解压后在目录里可以直接双击运行
keytool 证书工具(Java SDK里自带的)
jarsigner 签名工具(Java SDK里自带的)

Java基本知识

JAVA源代码文件是XXX.java
JAVA是编译性语言,编译后才能运行(PYTHON是解释性语言,直接运行)
JAVA编译后的文件是XXX.class class文件是可执行文件,在安卓下面是 xxx.dex dex是安卓里可执行文件
JAVA虚拟机运行可以运行XXX.class java XXX.class

安卓软件包:APK

APK就是一个压缩文件,在电脑上可以通过重命名成zip后缀,然后用zip压缩解压
常规APK目录下会有
  • assets:静态资源文件(图片,网页,视频,语音),不会被编译(直接可以查看的)
  • lib:APP依赖的第三方库 .so库(C语言写的),系统库,自己打包的库。有的把加密/token生成方式放在.so文件里
  • res:静态资源文件(静态文本,图片,关键资源) 汉化,要被编译成二进制的,无法直接查看(储存比assets更重要的机密信息)。 举例汉化,游戏人物对白,游戏人物头像
  • META-INF:签名信息
  • AndroidManifest.xml:配置信息(关键),一个安卓APP运行起来必须会读这个文件,举例修改权限
  • classes.dex:程序主逻辑代码所在处,android dalvik虚拟机可执行文件(用APKTOOL反编译之后会变成smali文件)
  • resources.arsc:res的资源索引/对应文件。(classes.dex通过读取resources.arsc从而在res中找到所需要的文件)
APP开发人员利用解压的漏洞,进行加固(解决方法:1.反编译老版本 2.等待反编译软件更新)

猜你喜欢

转载自blog.csdn.net/m0_50685012/article/details/113428056