查看原文
其他

技术分享|解决APK伪加密技巧分享

天宇宁达 CFlab
2024-09-09


商业APP为了防止反编译、被篡改,往往会采用第三方的APP加固方案,通过对源代码的混淆、加固、加壳等技术手段,隐藏源APP的逻辑结构,大大提高了反编译的难度,达到保障APP的安全与稳定运行的目的。而网赌、电诈、色情等涉网犯罪APP,基于成本考虑,其幕后的开发者往往不会采用第三方加固方案,但有可能会采用一些无成本的对抗机制,基于APK文件格式的反编译对抗就是其中的一种。



A
PK简介
APK是Android application package的缩写,在PC上它被看成压缩格式的文件,在手机上才作为一个可执行格式文件,一个apk安装包主要是由编译代码,资源文件,签名文件,清单(manifest)文件、索引文件等等几部分文件组成。作为类似ZIP格式文件,我们可以使用解压软件来查看其内容,如下:

解压软件打开apk

apk组成文件功能简介


由于安卓平台的开源性,目前对apk的研究也火来了,伴随对apk的安全性问题也随之暴露,试想一下?开发者辛苦开发的软件肯定不希望被人随意的破解,那么对软件的保护必须重视起来。

APK软件保护技术
软件保护技术是伴随着软件破解技术一起发展起来的,目前常用的软件保护技术有:

常用软件保护技术

技术手段虽然各种各样,但是最终的目前都是保护我们的apk不被轻易的破解反编译。



APK文件格式的反编译对抗
前文提到,基于成本考虑,对于诈骗apk其幕后的开发者往往不会采用第三方加固方案,基本上采用一些无成本的对抗机制,基于APK文件格式的反编译对抗就是其中的一种。


  • 基于ZIP文件格式的反编译对抗

为了不影响APK的正常安装和运行,幕后开发者不可能修改APK文件(ZIP包)的任意内容,而只能修改某些不会被Android包安装服务检测的特征数据,包括通用标记字段的加密标记位、磁盘编号、目录总数等等,达到的效果PC上无法解压,没办法轻易反编译,而手机上就能正常的安装与运行。如下所示:

解压软件解压失败


在举例之前我们需要探讨一下,zip文件的文件结构,一个标准的zip的文件的二进制数据由三部分组成:数据区、目录区、目录结束标志区组成,具体结构如下所示(使用010editor中zip模板打开)
zip文件二进制结构
各二进制数据组成含义如下:

zip文件二进制结构简介
这里将数据区的通用标记位修改为奇数,即可达到伪加密的效果(这种办法慢慢被大众所熟知,效果已经不理想了)。

  • 基于AndroidManifest文件格式的反编译对抗

基于AndroidManifest文件格式的反编译对抗的原理和基于ZIP文件格式的反编译对抗原理是一样的,对AndroidManifest某些特征数据的修改可以“欺骗”反编译工具从而导致反编译失败,但在安卓系统上Android的包安装服务对该类“欺骗”免疫而不会影响APP的正常安装,主要有下面两种手段。

1、修改AndroidManifest文件的幻数(Magic Number)即文件头为0x00080003

2、修改字符串个数

而修改了Androidmanifest文件使用反编译工具会出现乱码的情况:

Androidmanifest打开异常情况

AndroidManifest文件(AndroidManifest.xml)是APK中的关键文件,记录了APP的包名、版本、权限信息、四大组件信息等信息。Android包安装服务通过解析该文件才能正常安装APK。AndroidManifest文件有文本和二进制两种形式。APP开发阶段,开发者通过文本形式的AndroidManifest文件明文配置APP的各项信息;APP打包后,各项信息则被编译工具编译成二进制数据存储于AndroidManifest二进制文件中。

因此,未经反编译直接解压APK后,打开AndroidManifest文件,只能看到乱码. AndroidManifest文件结构较复杂,由文件头组块(Magic Number和File Size)、字符串组块(String Chunk)、资源ID组块(Resourceid Chunk)和xml内容组块(xmlContent Chunk)组成。使用010editor中Androidmanifest模板打开如下:

Androidmanifest文件结构

Androidmanifes文件二进制简介

具体每个细节的分析可以参考网上公开的技术文章:https://bbs.kanxue.com/thread-194206.htm


如何破解伪加密
1、手工:按照加密原理逆向还原,难点:需要充分的了解apk的文件结构,上手难度大。
2、使用工具:
  • NP管理器:使用反伪加密,在使用银河进行分析。

np管理器反解密

  • 第三方分析系统:不少平台已经支持伪加密apk的分析了

摸瓜——费APK反编译分析工具 (https://mogua.co/

南明离火——移动安全分析平台  (zhihuaspace.cn)

谷歌——( VirusTotalHome


  • aapt命令、adb命令查看androidmanifest文件信息

aapt(适用于静态分析)

说明:查看apk中的信息 

用法:aapt dump xmltree 【apk名字】【需要查看的资源文件xml】

例子:aapt dump xmltree demo.apk AndroidManifest.xml

adb(适用于动态分析)

说明:可以查看指定包名应用的详细信息

用法:adb shell dumpsys package 【包名】

例子:adb shell dumpsys package com.tencent.mm




产品咨询

技术工程师

贺   佳:13908073212

王高阳:18513400125

微信助手

 


技术分享|Telegram取证分享

技术分享|微信小程序 Burp+proxifier 抓包详细教程

技术分享|【译】安卓14取证技术初探

技术分享|涉网犯罪信息侦察思路分享

关于我们

北京天宇宁达科技有限公司创建于 2016 年,前身为 2009 年的北京天宇宁科技有限公司。历经十余年的发展与积累,天宇宁达已成为国内电子数据取证行业卓越领先的产品与解决方案供应商,同时也是国内知名的电子数据专业取证服务与培训机构。

个人观点,仅供参考
继续滑动看下一个
CFlab
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存