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

Androidmanifest文件加固和对抗

前言

恶意软件为了不让我们很容易反编译一个apk,会对androidmanifest文件进行魔改加固,本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件,我们学完之后可以动手实践。

1、Androidmanifest文件组成

这里贴一张经典图,主要描述了androidmanifest的组成

image

androidmanifest文件头部仅仅占了8个字节,紧跟其后的是StringPoolType字符串常量池

(为了方便我们观察分析,可以先安装一下010editor的模板,详细见2、010editor模板)

Magic Number

这个值作为头部,是经常会被魔改的,需要重点关注

image

StylesStart

该值一般为0,也是经常会发现魔改

image

StringPool

image

寻找一个字符串,如何计算?

1、获得字符串存放开放位置:0xac(172),此时的0xac是不带开头的8个字节

所以需要我们加上8,最终字符串在文件中的开始位置是:0xb4

2、获取第一个字符串的偏移,可以看到,偏移为0

image

3、计算字符串最终存储的地方: 0xb4 = 0xb4 + 0

读取字符串,以字节00结束

image

读取到的字符为:theme

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

总结:

stringpool是紧跟在文件头后面的一块区域,用于存储文件所有用到的字符串

这个地方呢,也是经常发生魔改加固的,比如:将StringCount修改为0xFFFFFF无穷大

在经过我们的手动计算和分析后,我们对该区域有了更深的了解。

2、010editor模板

使用010editor工具打开,安装模板库

image

搜索:androidmanifest.bt

image

安装完成且运行之后:

image
会发现完整的结构,帮助我们分析

3、使用AXMLPrinter2进行的排错和修复

用法十分简单:

java -jar AXMLPrinter2.jar AndroidManifest_origin.xml

会有一系列的报错,但是不要慌张,根据这些报错来对原androidmanifest.xml进行修复

image​​

意思是:出乎意料的0x80003(正常读取的数据),此时却读取到:0x80000

按照小端序,正常的数据应该是: 03 00 08

使用 010editor 打开

image

将其修复

image

保存,再次尝试运行AXMLPrinter2

image

好家伙还有错误,这个-71304363,不方便我们分析,将其转换为python的hex数据

NegativeArraySizeException 表示在创建数组的时候,数组的大小出现了负数。

androidmanifest加固后文件与正常的androidmanifest文件对比之后就可以发现魔改的地方。

image

将其修改回去

image

运行仍然报错,是个新错误:

image

再次去分析:

image

stringoffsets如此离谱,并且数组的大小变为了0xff

image

image

根据报错的信息,尝试把FF修改为24

image
image

再次运行

image

成功拿到反编译后的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三叉戟模型」技术为基础&#xff0c;持续推动加密技术的发展&#xff0c;打造 Schutz&#xff08;舒茨盾&#xff09; AI 金融隐私匿名公链。致力于提供高效的技术服务&#xff0c;基于机构…...

java接口和多态

1.接口 1.1黑马信息管理系统集合改进 (应用) 使用数组容器的弊端 容器长度是固定的&#xff0c;不能根据添加功能自动增长 没有提供用于赠删改查的方法 优化步骤 创建新的StudentDao类&#xff0c;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、建立私服后依赖查找和下载逻辑第一步&#xff1a;请求本地仓库第二步&#xff1a;请求 Maven 私服第三步&#xff1a;请求外部远程仓库&#xff08;远程中央仓库等&#xff09…...

TMDB电影数据分析(下)

TMDB电影数据分析&#xff08;下&#xff09; 本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素&#xff0c;数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分…...

django后台手机号加密存储

需求&#xff1a; 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&am…...

三、Qt Creator 使用

关于Qt的安装及环境配置&#xff0c;在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点&#xff0c;在新建 工程文件时&#xff0c;所在路径不要有中文&#xff0c;否则编译及运行程序不能正常运行。 在使用Qt Creator&#xff08;以下…...

css 边框渐变

需求&#xff1a; 普通的div 边框不好看&#xff0c;做一个渐变色 进程&#xff1a; 最简单的当然是做一个内部是白色的边框是渐变色的图&#xff0c;然后使用 background: url("back.jpg")&#xff0c;这样看起来就像是做了一个渐变的边框如果做不了图&#xff0…...

SofaMQ一些常用的API

SofaMQ的十五种常用的API 引言 SofaMQ作为阿里巴巴开源的消息中间件&#xff0c;提供了丰富的API以支持各种消息传递场景。在本文中&#xff0c;我们将介绍SofaMQ的十五种常用API&#xff0c;并通过实例演示其用法。 1. Producer相关API 1.1 SofaMQProducer SofaMQProduce…...

IIS 缓存, 更新后前端资源不能更新问题

解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…...

中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数

作者&#xff1a;李宝珠 编辑&#xff1a;三羊 中国科学院深圳先进技术研究院罗小舟团队提出了&#xff0c;基于酶动力学参数预测框架 (UniKP)&#xff0c;实现多种不同的酶动力学参数的预测。 众所周知&#xff0c;生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…...

组件中写选项的顺序(vue的问题)

为什么选项要有统一的书写顺序呢&#xff1f;很简单&#xff0c;就是要将选择和认知成本最小化。 副作用 (触发组件外的影响) el全局感知 (要求组件以外的知识) nameparent组件类型 (更改组件的类型) functional模板修改器 (改变模板的编译方式) delimiterscomments模板依赖 (…...

LUA 对象转excel

1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组&#xff0c;否则没有什么意义&#xff0c;即lua对象要是一个数组比较合理。这里使用开源的json.lua&#xff0c; 但是开源的&#xff0c;对于数字作下标的&#xff0c;或者是一个数组里&#xff0c;不同类型的key…...

深入理解 Flink(八)Flink Task 部署初始化和启动详解

JobMaster 部署 Task 核心入口&#xff1a; JobMaster.onStart();部署 Task 链条&#xff1a;JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …...

独立站 AI 智能推荐商品功能落地实操:从 0 到 1 提升转化与客单价

在独立站运营中&#xff0c;流量成本持续走高&#xff0c;很多站点陷入 “有流量、没转化、客单价低” 的困境。2026 年跨境电商数据显示&#xff0c;部署 AI 智能推荐的独立站&#xff0c;平均转化率提升 4.7%-15%&#xff0c;客单价上涨 20%-30%&#xff0c;复购率提高 18% 以…...

PHP - PHP 简易 Web 服务器、基础接口开发

一、PHP 简易 Web 服务器 1、基本介绍 PHP 自带一个简易的 Web 服务器&#xff0c;适合快速测试&#xff0c;启动方式如下 php -S 【监听地址】:【监听端口】# 例如php -S 127.0.0.1:80002、注意事项 通过以下方式启动&#xff0c;就需要通过 localhost 访问&#xff0c;而不能…...

8.C# —— 随机数、DateTime时间、字符串

一、C# 随机数&#xff08;伪随机 安全随机&#xff09;1. 核心概念计算机中没有真正的随机数&#xff0c;生成的都是伪随机数&#xff08;通过算法 种子计算得出&#xff09;。种子相同 → 生成的随机数序列完全相同不指定种子 → 默认使用系统当前时间作为种子&#xff0c;…...

LeetCode 88:合并两个有序数组 | 双指针从后向前求解

LeetCode 88&#xff1a;合并两个有序数组 | 双指针从后向前求解 引言 合并两个有序数组&#xff08;Merge Sorted Array&#xff09;是 LeetCode 第 88 题&#xff0c;难度为 Easy&#xff0c;但却是双指针法应用的经典案例。题目要求将两个已排序的数组 nums1 和 nums2 合并…...

OpenELB安全配置:RBAC、网络策略与证书管理最佳实践

OpenELB安全配置&#xff1a;RBAC、网络策略与证书管理最佳实践 【免费下载链接】openelb Load Balancer Implementation for Kubernetes in Bare-Metal, Edge, and Virtualization 项目地址: https://gitcode.com/gh_mirrors/op/openelb OpenELB是一款专为Kubernetes设…...

3个核心功能:用HSTracker将炉石传说数据转化为你的制胜优势

3个核心功能&#xff1a;用HSTracker将炉石传说数据转化为你的制胜优势 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 在炉石传说的竞技场上&#xff0c;每一张卡牌的抽…...

从CubeMX到AD:为你的STM32F4项目创建‘带注释’原理图符号的完整指南

从CubeMX到AD&#xff1a;打造STM32F4项目专属原理图符号的工程实践 在嵌入式硬件开发中&#xff0c;原理图符号的清晰度直接影响着团队协作效率和后期维护成本。许多工程师都曾遇到过这样的困境&#xff1a;面对一个标准STM32芯片符号&#xff0c;需要反复查阅数据手册才能确认…...

DistroAV(原OBS-NDI)完整使用指南:NDI技术在OBS中的高效应用

DistroAV&#xff08;原OBS-NDI&#xff09;完整使用指南&#xff1a;NDI技术在OBS中的高效应用 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi DistroAV&#xff08;原名…...

FontCenter:AutoCAD字体管理终极解决方案,彻底告别字体缺失困扰

FontCenter&#xff1a;AutoCAD字体管理终极解决方案&#xff0c;彻底告别字体缺失困扰 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter 你是否曾经在打开AutoCAD图纸时遇到过字体缺失的尴尬&#xff1f;…...

Perplexity语法查询功能深度解析(官方未公开的7个语法边界场景)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity语法查询功能的核心定位与设计哲学 Perplexity语法查询功能并非通用搜索引擎的简单变体&#xff0c;而是面向技术深度用户的语义化推理引擎。其核心定位在于将自然语言提问转化为可执行、可验证、可…...