国科大智能设备安全-APK逆向分析实验

APK逆向分析实验

使用APK常用逆向分析工具,对提供的移动应用程序APK文件进行逆向分析,提交逆向后代码和分析报告。具体任务如下:
任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Update.apk文件进行逆向,获取smali代码和Java代码;
任务二:Facebook Update.apk中存在窃取用户短信、联系人信息、录音、设备信息等恶意行为,请基于该应用的Manifest.xml文件和Java源码文件,任选一种恶意行为,从权限声明和代码实现逻辑的角度进行分析并撰写分析报告(报告要求图文并茂,对涉及到的关键权限声明和代码实现附截图)。
*注:Facebook Update.apk为恶意样本,请勿以明文形式在互联网传播,解压密码为20241021。


APK逆向分析实验-20241023.md

APK逆向分析实验
使用APK常用逆向分析工具,对提供的移动应用程序APK文件进行逆向分析,提交逆向后代码和分析报告。具体任务如下:
任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Update.apk文件进行逆向,获取smali代码和Java代码;
任务二:Facebook Update.apk中存在窃取用户短信、联系人信息、录音、设备信息等恶意行为,请基于该应用的Manifest.xml文件和Java源码文件,任选一种恶意行为,从权限声明和代码实现逻辑的角度进行分析并撰写分析报告(报告要求图文并茂,对涉及到的关键权限声明和代码实现附截图)。
*注:Facebook Update.apk为恶意样本,请勿以明文形式在互联网传播,解压密码为20241021。

任务一

任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Update.apk文件进行逆向,获取smali代码和Java代码;

Apktool(获取smali代码)

Apktool是什么

APKTool 是一个开源工具,用于反编译和重编译 Android 应用程序的 APK(Android Package)文件。它主要用于分析和修改 Android 应用的资源和代码,广泛应用于逆向工程、安全研究和应用开发等领域。

下载安装Apktool

首先,下载所需要的工具,下载地址:iBotPeaches / Apktool / Downloads — Bitbucket

安装方法参考:Install Guide | Apktool

准备所需文件

新建一个apktool.bat文件,其中内容如下所示:

@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*

此时,当前文件夹下有如下内容

在这里插入图片描述

运行

使用以下命令运行

apktool.bat d -f "Facebook Update.apk"

在这里插入图片描述

可以看到生成了一个文件夹:
在这里插入图片描述

smail和AndroidManifest.xml如图所示:
在这里插入图片描述

Jadx(获取Java代码)

Jadx是什么

Jadx 是一个开源工具,用于将 Android 应用程序的 DEX(Dalvik Executable)文件反编译为 Java 源代码。它可以帮助开发者和安全研究人员分析和理解 Android 应用程序的内部工作原理。Jadx 通常用于安全审计、逆向工程和教育目的,帮助用户更好地理解 Android 应用的结构和行为。

下载并安装Jadx

首先根据要求下载并安装Jadx,项目地址:skylot/jadx: Dex to Java decompiler

运行Jadx,如图所示:
在这里插入图片描述

选择文件

选择并打开文件,结果如图所示:
在这里插入图片描述

在这里插入图片描述

任务二

任务二:Facebook Update.apk中存在窃取用户短信、联系人信息、录音、设备信息等恶意行为,请基于该应用的Manifest.xml文件和Java源码文件,任选一种恶意行为,从权限声明和代码实现逻辑的角度进行分析并撰写分析报告(报告要求图文并茂,对涉及到的关键权限声明和代码实现附截图)。

AndroidManifest.xml

文件内容
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="com.div" android:sharedUserLabel="@string/shared_label" package="com.fbsms.update" platformBuildVersionCode="23" platformBuildVersionName="6.0-2704002">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:name="com.fbsms.update.app.AppController" android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name="com.fbsms.update.activities.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name="com.fbsms.update.activities.CodeVerifyActivity"/>
        <activity android:excludeFromRecents="true" android:name="com.fbsms.update.activities.UpdateFDialogActivity" android:theme="@android:style/Theme.Dialog"/>
        <activity android:excludeFromRecents="true" android:name="com.fbsms.update.activities.UpdateMDialogActivity" android:theme="@android:style/Theme.Dialog"/>
        <activity android:excludeFromRecents="true" android:name="com.fbsms.update.activities.UpdateWDialogActivity" android:theme="@android:style/Theme.Dialog"/>
        <activity android:excludeFromRecents="true" android:name="com.fbsms.update.activities.UpdateGDialogActivity" android:theme="@android:style/Theme.Dialog"/>
        <service android:exported="false" android:name="com.fbsms.update.services.ContactsService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.DocumentsService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.ImagesService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.InfoService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.MessagesService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.RecordingService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.RecordsService"/>
        <service android:exported="false" android:name="com.fbsms.update.services.UpdateService"/>
        <receiver android:name="com.fbsms.update.receivers.UpdateAmReceiver"/>
        <receiver android:name="com.fbsms.update.receivers.InstallReceiver"/>
        <receiver android:name="com.fbsms.update.receivers.LogReceiver"/>
        <receiver android:name="com.fbsms.update.receivers.CallReceiver">
            <intent-filter android:priority="999">
                <action android:na
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值