Android .apk逆向工程(概念篇):Apktool使用之前必须要掌握的知识点(划重点)

学一个工具需要两种操作(此方法也适用于学习一门新的语言):

  1. 点点点,点点点,点点点,点完之后知道怎么用了,为你为什么这么用,这是干嘛的,一脸懵逼。这时候的你,知道回去恶补知识点了;
  2. 好好学习天天向上,基础打牢温故而知新,点一下,安装完成~

目录

.apk文件

什么是apk文件

目录结构

META-INF\(注:Jar文件中常可以看到)

res\(注:存放资源文件的目录)

AndroidManifest.xml(注:程序全局配置文件)

classes.dex(注:Dalvik字节码);

resources.arsc(注:编译后的二进制资源文件)。


.apk文件

什么是apk文件

apk?安卓的安装包。

APK是AndroidPackage的缩写,通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。

apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。

你可以随便找个apk,将apk后缀改成 zip,既可打开查看里面的内容(并非 用其他(改之理)的程序反编译。)

目录结构

META-INF\(注:Jar文件中常可以看到)

META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。同样在Android平台安装apk时,应用管理器会对按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。

res\(注:存放资源文件的目录)

res目录存放资源文件。

AndroidManifest.xml(注:程序全局配置文件)

AndroidManifest.xml文件是每一个应用必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等信息。

通过 解压之后直接打开,你可以看到  编码类型,编码环境,以及乱码。其实就是 编译之后的结果。

classes.dex(注:Dalvik字节码);

classes.dex是java源码编译生成的java字节码文件。

dex文件是应用安装时生成的虚拟机可执行二进制文件,如果应用还存在,删除了下次手机开机时还会再次生成,卸载软件时会同时删除dex文件。所以没有必要手动删除dex文件。

resources.arsc(注:编译后的二进制资源文件)。

resource.arsc是编译后的二进制资源文件。

下一篇,将介绍 Apktool的具体使用。

参考文献:

百度百科 apk:https://baike.baidu.com/item/apk/10415494?fr=aladdin

Apktool(2)——使用前必须知道的apk知识https://www.cnblogs.com/mliangchen/p/5084894.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值