当前位置: 首页 > news >正文

Android APK混淆处理方案分析

这里写目录标题

  • 一、前言
    • 1.1 相关工具
  • 二、Apk 分析
    • 2.1 apk 解压文件
    • 2.2 apk 签名信息
    • 2.3 apk AndroidManifest.xml
    • 2.4 apk code
  • 三、Apk 处理
    • 3.1 添加垃圾文件
    • 3.2 AndroidManifest.xml 处理
    • 3.3 dex 混淆处理
    • 3.4 zipalign对齐
    • 3.5 apk 重新签名
    • 3.6 apk 安装测试
  • 四、总结

一、前言

提供apk给到外部,外部对apk进行二次处理后重新给我们一个新apk。尝试分析源apk文件和处理后的apk文件区别,根据其中区别推测外部的混淆处理方案,尽可能还原外部对apk的处理方式。以下对处理和未处理的apk文件用新、旧apk名称表示。

1.1 相关工具

  1. jadx-gui
  2. apktool
  3. baksmali
  4. BlackObfuscator
  5. Beyond Compare

二、Apk 分析

2.1 apk 解压文件

左边新apk,右边旧apk
在这里插入图片描述

通过Beyond Compare 比对可以发现,新旧 apk 解压出来的文件中 apk 签名信息、AndroidManifest.xml
dexresources.arsc 文件存在差异。其中 resources.arsc
文件存储了应用程序中所有资源的信息,字符串、布局、图像等都会被编译成二进制格式打包到 apk 文件内,暂时先不管这个文件。

2.2 apk 签名信息

旧apk签名信息-01
旧apk签名信息-02
新apk签名信息-01
新apk签名信息-02

从上面几张图可以看出旧 apk 和新 apk 的签名信息是不一样的。旧 apk 的签名信息只包含v1v2签名,而新 apk 则拥有v1、v2、v3的签名方案。由此可以推断出外部在对apk处理过后对apk进行了重新签名的操作。

2.3 apk AndroidManifest.xml

新apk-AndroidManifest-01

新apk-AndroidManifest-02
旧apk-AndroidManifest

通过 对比新旧 apk 的 AndroidManifest 文件可以发现新 apk 的 AndroidManifest
文件中多出了一大段代码,这段代码的格式都基本一致。

 <activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:name="com.cleronomybouhdg.wyomissingmludvzc.g756Z5WBuO" android:taskAffinity="" android:launchMode="standard" android

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL 存储引擎详解
  • 关于 夜莺n9e 的简易部署
  • 动态接口调优:在Mojo模型中调整模型的输入输出接口
  • 学习记录:ESP32控制舵机 FREERTOS BLE
  • RuoYi-Vue-Plus(动态添加移除数据源)
  • 构建查询洞察 UI
  • WEB前端10- Fetch API(同步/异步/跨域处理)
  • 基于Markdown的文档网站生成工具-VitePress框架
  • 强制通风(2):发动机为什么要进行曲轴强制通风?它的目的是什么呢?
  • 深入 Symfony 服务容器:依赖注入的艺术
  • 基于web的物流配送管理系统/基于客户时间窗变化的物流配送管理系统/快递配送管理系统
  • AI发展下的伦理挑战,应当如何应对?
  • go语言day15 goroutine
  • 搜索与下载Stable Diffusion 模型
  • ResT v2 论文解读
  • $translatePartialLoader加载失败及解决方式
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【mysql】环境安装、服务启动、密码设置
  • gcc介绍及安装
  • Iterator 和 for...of 循环
  • java概述
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Mysql数据库的条件查询语句
  • oschina
  • Redis 中的布隆过滤器
  • 入手阿里云新服务器的部署NODE
  • Android开发者必备:推荐一款助力开发的开源APP
  • gunicorn工作原理
  • 阿里云ACE认证之理解CDN技术
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # Maven错误Error executing Maven
  • #162 (Div. 2)
  • #if 1...#endif
  • #Z0458. 树的中心2
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (分布式缓存)Redis分片集群
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (六)DockerCompose安装与配置
  • (实战篇)如何缓存数据
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET MVC第五章、模型绑定获取表单数据
  • .net MySql
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .so文件(linux系统)
  • ::前边啥也没有
  • @Async 异步注解使用
  • @property python知乎_Python3基础之:property
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现