《从零开始学Android逆向(03)-APK的文件结构》
本帖最后由 174888 于 2020-2-17 16:33 编辑前言 写这从零开始学破解的教程是因为有很多人想学习Android逆向但是不知道怎么去学习,网上教程是找到一大堆,但是大多讲的都杂乱无章,看了都看不懂的感觉,也有不少刚接触Android逆向或者说也学习了一段时间的逆向了.但是还是不知道自己学的啥,感到很迷茫.
从今天开始我会通过写图文的教程方式手把手的教大家如何学习逆向.由于Android系统在电脑运行的特殊性,那么我们需要提前准备好可以调试运行安卓的环境以及各项工具的使用通用性,下面我会逐步讲解每一个详细的步骤.
如果有不明白的小伙伴,可以私信给我,告诉我哪里没有看懂,我会在教程中再作补充.
本教程还有后续内容,更新时间不固定,但会持续更新,目前我总结出来的差不多应该有200个帖子左右的内容,由浅及深,但由于我本人水平有限,关于更难的部分,我会在更靠后的章节部分来讲解,由于是免费分享给大家.所以本教程仅以图文方式展现,并无视频.
那么下面开始今天的课程吧:
想要了解Android逆向,首先你要对安卓APK的文件有所了解,每一个文件夹内所存储的文件都是做什么用的,它们是如何分类的.如果连这些都不了解,那么今天就可以来重点关注一下本帖内容,让以后分析APK的时候少走弯路~
1.我们刚开始学习分析APK的时候手里没有那么多的工具,也不知道如何去处理其中的文件,应该去分析哪里才是第一步呢?拿一款普通app我们首先用zip压缩文件打开会出现以下文件夹
2.assets静态资源文件夹 lib是so文件夹 meta-inf签名文件夹 res字符串和布局文件 Androidmanifest是APK清单 .dex是JAVA代码的体现形式 解压app文件,可以看到以下文件夹和文件
assets文件夹用来存放静态资源文件,如图片,JSON/渠道配置文件,二进制数据文件,
HTML5离线资源文件等
与res/raw目录不同的是,assets目录支持任意深度的子目录,且不会生成资源id
lib文件夹代表的是当前app所用的到的so文件,so文件就是利用底层的c,c++代码实现的
META-INF文件夹(非常特殊)就是证书签名文件
MANIFEST.MF(摘要文件)
程序遍历非签名文件非文件夹的文件,用SHA1逐个生成摘要信息,再用base64进行编码(哈希算法)该文件用于安装时的校验,如果签名与文不同,说明被篡改,无法安装。
CERT.SF(对摘要文件的签名文件)用SHA1-RSA算法对开发者的私钥进行签名。用来保证摘要文件没被修改。 INDEX.LIST 索引文件目录
CERT.RSA 保存公钥、加密算法等信息
res文件夹存放资源文件,所有资源的id存在R.java的索引里
androidmanifest.xml 整个项目系统的清单文件 不能直接打开,要反编译才能看到四大组件均在此配置和声明
class.dex 源码可执行文件,如果有多个,说明方法数超过了65535,进行了分包处理可以通过反编译工具dex2jar转化为jar,再用jd-gui看代码
resources.arsc资源索引表,用来描述具有id的资源的配置信息我们要改包名,图片等,要特别注重resources
通过学习以上文件的解析,使得我们在今后分析APK的时候将要如何系统的找寻文件,以及如何快速定位资源打下了坚实基础!
===============================
《从零开始学Android逆向(01)-逆向环境搭建-JDK的安装与配置》
https://www.52hb.com/thread-45952-1-1.html
(出处: 吾爱汇编论坛)
《从零开始学Android逆向(02)-逆向环境搭建-SDK与NDK的安装与配置》
https://www.52hb.com/thread-45953-1-1.html
(出处: 吾爱汇编论坛)
下次更新->APK的打包流程!
依次帖子更新内容如下:
APK的打包流程
APK的安装流程
ADB常用命令指令集
什么是dalvik虚拟机
什么是dalvik字节码
如何配置Androidkiller与使用
如何篡改APK的名称与图标.
怎样修改包名和实现应用的分身
如何通过修改AndroidManifest.xml去除单机游戏的广告
更多精彩内容,容我慢慢更新,本次帖子仅更新在吾爱汇编论坛.非允许,请勿转载~
大佬能向你请教几个问题吗?本人遇到几个小问题 学习大佬操作 谢谢分享 谢谢分享 大佬牛批!顶!! 谢谢分享 感谢楼主 被标题吸引进来了,回复看看 支持一波~~