Androidmanifest文件加固和对抗
前言
恶意软件为了不让我们很容易反编译一个apk,会对androidmanifest文件进行魔改加固,本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件,我们学完之后可以动手实践。
1、Androidmanifest文件组成
这里贴一张经典图,主要描述了androidmanifest的组成
androidmanifest文件头部仅仅占了8个字节,紧跟其后的是StringPoolType字符串常量池
(为了方便我们观察分析,可以先安装一下010editor的模板,详细见2、010editor模板)
Magic Number
这个值作为头部,是经常会被魔改的,需要重点关注
StylesStart
该值一般为0,也是经常会发现魔改

StringPool
寻找一个字符串,如何计算?
1、获得字符串存放开放位置:0xac(172),此时的0xac是不带开头的8个字节
所以需要我们加上8,最终字符串在文件中的开始位置是:0xb4
2、获取第一个字符串的偏移,可以看到,偏移为0
3、计算字符串最终存储的地方: 0xb4 = 0xb4 + 0
读取字符串,以字节00结束
读取到的字符为:theme
帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
总结:
stringpool是紧跟在文件头后面的一块区域,用于存储文件所有用到的字符串
这个地方呢,也是经常发生魔改加固的,比如:将StringCount修改为0xFFFFFF无穷大
在经过我们的手动计算和分析后,我们对该区域有了更深的了解。
2、010editor模板
使用010editor工具打开,安装模板库
搜索:androidmanifest.bt
安装完成且运行之后:
会发现完整的结构,帮助我们分析
3、使用AXMLPrinter2进行的排错和修复
用法十分简单:
java -jar AXMLPrinter2.jar AndroidManifest_origin.xml
会有一系列的报错,但是不要慌张,根据这些报错来对原androidmanifest.xml进行修复
意思是:出乎意料的0x80003(正常读取的数据),此时却读取到:0x80000
按照小端序,正常的数据应该是: 03 00 08
使用 010editor 打开
将其修复
保存,再次尝试运行AXMLPrinter2
好家伙还有错误,这个-71304363,不方便我们分析,将其转换为python的hex数据
NegativeArraySizeException 表示在创建数组的时候,数组的大小出现了负数。
androidmanifest加固后文件与正常的androidmanifest文件对比之后就可以发现魔改的地方。
将其修改回去

运行仍然报错,是个新错误:
再次去分析:
stringoffsets如此离谱,并且数组的大小变为了0xff
根据报错的信息,尝试把FF修改为24
再次运行
成功拿到反编译后的androidmanifest.xml文件
总结:
这个例子有三个魔改点经常出现在androidmanifest.xml加固
恶意软件通过修改这些魔改点来对抗反编译
相关文章:
Androidmanifest文件加固和对抗
前言 恶意软件为了不让我们很容易反编译一个apk,会对androidmanifest文件进行魔改加固,本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件,我们学完之后可以动手实践。 1、Androidmanife…...
openssl3.2 - 官方demo学习 - cms - cms_denc.c
文章目录 openssl3.2 - 官方demo学习 - cms - cms_denc.c概述笔记END openssl3.2 - 官方demo学习 - cms - cms_denc.c 概述 将CMS数据结构写入PEM文件, 并将分离后的加密数据单独写到数据文件. 笔记 /*! \file cms_denc.c * \note openssl3.2 - 官方demo学习 - cms - cms_d…...
【Linux 命令】tree 对目录进行树形展示
目录 1、tree 命令功能展示 2、tree 命令安装 3、tree 命令语法及其参数功能 4、终止 tree 展开树命令 1、tree 命令功能展示 在 Linux 中,我们使用 ll 命令对目录的展示并不太方便我们查看,不太清晰明了,所以我们可以使用 tree 命令以…...
掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!
拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…...
使用xbindkeys设置鼠标侧键
1.安装如下包 sudo apt install xbindkeys xautomation 2.生成配置文件 xbindkeys --defaults > $HOME/.xbindkeysrc 3.确定侧键键号 在终端执行下面的代码: xev | grep button 此时会出现如下窗口,将鼠标指针移动到这个窗口上: 单…...
跨站点请求伪造攻击 - Cross Site Request Forgery (CSRF)
什么是CSRF 最好理解CSRF攻击的方式是看一个具体的例子。 假设你的银行网站提供一个表单,允许当前登录用户将钱转账到另一个银行账户。例如,转账表单可能如下所示: <form method="post"action="/transfer"> <...
PLAN B KRYPTO ASSETS GMBH CO. KG 普兰资产管理公司
引领加密技术不断演进 PLAN B KRYPTO ASSETS普兰资产管理以其独创的「Trident Strategy三叉戟模型」技术为基础,持续推动加密技术的发展,打造 Schutz(舒茨盾) AI 金融隐私匿名公链。致力于提供高效的技术服务,基于机构…...
java接口和多态
1.接口 1.1黑马信息管理系统集合改进 (应用) 使用数组容器的弊端 容器长度是固定的,不能根据添加功能自动增长 没有提供用于赠删改查的方法 优化步骤 创建新的StudentDao类,OtherStudentDao 创建ArrayList集合容器对象 OtherStudentDao中的方法声明…...
C# 图解教程 第5版 —— 第22章 命名空间和程序集
文章目录 22.1 引用其他程序集22.2 命名空间22.2.1 命名空间名称22.2.2 命名空间的补充22.2.3 命名空间跨文件伸展22.2.4 嵌套命名空间 22.3 using 指令22.3.1 using 命名空间指令22.3.2 using 别名指令22.3.3 using static 指令 22.4 程序集的结构22.5 程序集标识符22.6 强命名…...
【Maven】008-Maven 私服搭建与使用
【Maven】008-Maven 私服搭建与使用 文章目录 【Maven】008-Maven 私服搭建与使用一、概述1、简介2、建立私服后依赖查找和下载逻辑第一步:请求本地仓库第二步:请求 Maven 私服第三步:请求外部远程仓库(远程中央仓库等)…...
TMDB电影数据分析(下)
TMDB电影数据分析(下) 本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素,数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分…...
django后台手机号加密存储
需求: 1 :员工在填写用户的手机号时,直接填写,在django后台中输入 2:当员工在后台确认要存储到数据库时,后台将会把手机号进行加密存储,当数据库被黑之后,手机号字段为加密字符 3&am…...
三、Qt Creator 使用
关于Qt的安装及环境配置,在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点,在新建 工程文件时,所在路径不要有中文,否则编译及运行程序不能正常运行。 在使用Qt Creator(以下…...
css 边框渐变
需求: 普通的div 边框不好看,做一个渐变色 进程: 最简单的当然是做一个内部是白色的边框是渐变色的图,然后使用 background: url("back.jpg"),这样看起来就像是做了一个渐变的边框如果做不了图࿰…...
SofaMQ一些常用的API
SofaMQ的十五种常用的API 引言 SofaMQ作为阿里巴巴开源的消息中间件,提供了丰富的API以支持各种消息传递场景。在本文中,我们将介绍SofaMQ的十五种常用API,并通过实例演示其用法。 1. Producer相关API 1.1 SofaMQProducer SofaMQProduce…...
IIS 缓存, 更新后前端资源不能更新问题
解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…...
中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数
作者:李宝珠 编辑:三羊 中国科学院深圳先进技术研究院罗小舟团队提出了,基于酶动力学参数预测框架 (UniKP),实现多种不同的酶动力学参数的预测。 众所周知,生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…...
组件中写选项的顺序(vue的问题)
为什么选项要有统一的书写顺序呢?很简单,就是要将选择和认知成本最小化。 副作用 (触发组件外的影响) el全局感知 (要求组件以外的知识) nameparent组件类型 (更改组件的类型) functional模板修改器 (改变模板的编译方式) delimiterscomments模板依赖 (…...
LUA 对象转excel
1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组,否则没有什么意义,即lua对象要是一个数组比较合理。这里使用开源的json.lua, 但是开源的,对于数字作下标的,或者是一个数组里,不同类型的key…...
深入理解 Flink(八)Flink Task 部署初始化和启动详解
JobMaster 部署 Task 核心入口: JobMaster.onStart();部署 Task 链条:JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …...
从‘瓦特’到‘分贝瓦’:一个公式讲透无线通信中的功率与信噪比换算
从‘瓦特’到‘分贝瓦’:无线通信中的功率与信噪比实战指南 在无线通信系统设计中,功率与信噪比的换算如同工程师的"货币兑换"——你需要熟练掌握瓦特(W)、分贝瓦(dBW)、分贝毫瓦(dB…...
从C语言到裸机运行:i.MX6ULL 的 GPIO 控制与编译链接过程分析
引言在嵌入式系统开发中,从高级语言到硬件控制的完整链路涉及编译、链接、寄存器配置等多个环节。本文基于 i.MX6ULL 平台,以 C 语言实现 LED 与蜂鸣器控制为例,系统分析 ARM 裸机开发中的编译工具链使用、链接脚本的作用,以及 GP…...
3大核心功能:让iOS推送调试效率提升10倍的SmartPush工具全解析
3大核心功能:让iOS推送调试效率提升10倍的SmartPush工具全解析 【免费下载链接】SmartPush SmartPush,一款iOS苹果远程推送测试程序,Mac OS下的APNS工具APP,iOS Push Notification Debug App 项目地址: https://gitcode.com/gh_mirrors/smar/SmartPush 一、问…...
基于Python的本科生交流培养管理平台毕业设计源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于Python的本科生交流培养管理平台,以提升我国高等教育中本科生交流培养的质量与效率。具体研究目的如下:…...
掌握Web AR开发:从痛点到实战的AR.js技术指南
掌握Web AR开发:从痛点到实战的AR.js技术指南 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js Web AR开发痛点与解决方案 开发增强现实应用时࿰…...
【路径规划】传统A星+改进A星(star)彩色蔓延路径规划算法Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
别再死记硬背了!用Python和SymPy库5分钟可视化理解泰勒公式的逼近过程
用Python动态可视化泰勒公式:5行代码理解多项式逼近本质 数学公式的抽象性常常成为学习者的障碍,尤其是泰勒公式这种涉及无限逼近概念的内容。传统的静态图示和理论推导虽然严谨,却难以直观展示"以直代曲"的动态过程。本文将用Pyth…...
SemanticKITTI数据集评测:DarkNet53Seg、PointNet++等模型谁更强?附复现代码
SemanticKITTI点云语义分割实战:模型选型与性能优化指南 点云语义分割技术正在重塑自动驾驶、机器人导航和三维场景理解等领域的研究范式。作为该领域最具挑战性的基准之一,SemanticKITTI数据集凭借其大规模、高密度标注和真实场景多样性,已成…...
TikTok零/低播放突围:跨境账号实战破局指南
图片来源:TK云大师0播放或低播放是TikTok跨境从业者的高频痛点——行业数据显示,超68%新手账号遇初始零播放,45%带货账号因持续低播放停摆。耗时制作的内容无人问津,既耗资源又乱节奏。结合实操经验,本文从排查、挽救、…...
别再ping IP了!手把手教你给ZeroTier虚拟网络里的设备起个‘好记’的名字(DNS/mDNS实战)
告别IP记忆困扰:ZeroTier网络中的智能命名方案实战指南 每次在ZeroTier虚拟网络中访问设备时,你是否也厌倦了反复查看和输入那串冗长的IP地址?想象一下,当你想连接家庭NAS时,只需输入nas.home就能立即访问,…...
