安卓逆向分析基础知识介绍

admin 2023年5月29日18:56:10评论50 views字数 2478阅读8分15秒阅读模式

这篇主要是教大家APK基础知识,了解APK包的基础结构、APP多开原理、简易修改APK信息等内容。APK 的全称是Android Package,它相当于一个压缩文件,大多数压缩软件(7z、好压)都可以直接解压。

安卓逆向分析基础知识介绍


assets目录

存放的都是一些静态文件,比如图片、音视频等等。


安卓逆向分析基础知识介绍



lib 目录

用来存放应用程序所依赖的native库文件,native库一般是用C/C++进行编写的,这里的lib库可能包含4种不同类型,根据CPU型号的不同,我们大体可以分为ARM,ARM-v7a,MIPS,X86,分别对应着ARM架构,ARM-V7架构,MIPS架构和X86架构。


其中,不同的CPU架构对应着不同的目录,每个目录中可以存放非常多的对应版本的so库,而且这个目录的结构固定,用户只能按照这个目录来存放自己的so库。目前市场上使用的移动终端大多是基于ARM或者ARM-v7a架构的。从厂家上来分是有三种,arm,x86,MIPS,arm 系列是绝大多数手机上使用的,x86 主要是运用在平板上,而 MIPS ,我基本上就没见过。


安卓逆向分析基础知识介绍



META-INF目录

 保存应用程序的签名信息,签名信息可以验证APK文件的完整性。什么是签名呢?在android系统中,不同App之间是依靠包名、数字签名共同来进行区分的。虽然Google建议我们用自己的域名的反写作为包名的前缀来定义包名(例如com.google.),但是这并不能做到万无一失,我们不能单单利用包名来区分apk,所以提出了签名的概念。顾名思义,就是在apk上打上作者的烙印。


安卓逆向分析基础知识介绍



AndroidManifest.xml文件

 他是用来告诉android系统,这里面有关于APP的配置信息,你需要根据里面的设置的配置信息来运行这个app。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。

安卓逆向分析基础知识介绍

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="webapp.wawagongju" platformBuildVersionCode="30" platformBuildVersionName="S" android:versionCode="9" android:versionName="5.6" android:compileSdkVersion="30" android:compileSdkVersionCodename="S">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application android:theme="@style/Theme.WebApp" android:label="蛙蛙工具" android:icon="@drawable/icon" android:supportsRtl="true" android:usesCleartextTraffic="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory">
        <activity android:name="p063cn.woobx.webapp.WebAppMainActivity" android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>



classes.dex文件

 是Java源码编译后生成的Java字节码文件,APK运行的主要逻辑。resources.arsc文件 是编译后的二进制资源文件,它实际上就是App的资源索引表。这两个前期先简单了解一下是什么就可以了。


在演示APK安装包和微信安装包里面多了我标记的这两个文件夹:


安卓逆向分析基础知识介绍


kotlin

Kotlin和Java是用于Android应用程序开发的两种编程语言,即使是有技术背景的人,也会混淆Kotlin和Java,更不要说那些不知道这两个词的人了。而自Google推出Kotlin作为Android应用程序开发的第二种官方编程语言以来,Java与Kotlin之战就变得更加激烈了。



okhttp3

OKHttp是一个当前主流的网络请求的开源框架,很多APK将其调用。


以上就是对APK基本架构的简述,通过对这些资源的一个介绍,在下面讲到的简易修改APK可以快速定位。比如我们要修改一个图片或音频,那我们第一时间应该直接找到 assets目录 去修改、替换。如果要修改APK的主要逻辑,就应该从 dex 文件中去修改。


原文始发于微信公众号(网络安全与取证研究):安卓逆向分析基础知识介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月29日18:56:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向分析基础知识介绍https://cn-sec.com/archives/1763539.html

发表评论

匿名网友 填写信息