首页 > 其他分享 >Androidmanifest文件加固和对抗

Androidmanifest文件加固和对抗

时间:2024-01-15 16:26:54浏览次数:17  
标签:xml 文件 网安 字符串 androidmanifest 加固 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

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 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加固

恶意软件通过修改这些魔改点来对抗反编译

更多网安技能的在线实操练习,请点击这里>>

  

标签:xml,文件,网安,字符串,androidmanifest,加固,Androidmanifest,对抗
From: https://www.cnblogs.com/hetianlab/p/17965606

相关文章

  • APP加固原理与作用
    APP加固原理与作用 引言在移动应用开发中,APP加固是一种保护应用代码逻辑的重要措施。通过对应用文件进行隐藏、混淆和加密等操作,可以有效提高软件的逆向成本,降低被破解的几率。本文将介绍APP加固的原理和作用,并探讨免费和付费加固之间的区别。正文1.什么是APP加固,加固原理......
  • 一个简单的Linux系统加固方案
    一、系统默认帐号及组管理删除系统默认不使用的帐号,包括:lp、mail、games、ftp、nobody、postfix等。删除系统默认不使用的组,包括:mail、games、ftp、nobody、postfix等。二、启用密码策略1.密码60天过期,修改密码最小间隔为1天,最短密码要求8位,在密码过期前7天内通知用户。通过修改/e......
  • Linux安全合规性检查和加固
    一、账号和口令1.1禁用或删除无用账号减少系统无用账号,降低安全风险。操作步骤• 使用命令userdel<用户名>删除不必要的账号。• 使用命令passwd-l<用户名>锁定不必要的账号。• 使用命令passwd-u<用户名>解锁必要的账号。1.2检查特殊账号检查是否存在空口令和......
  • [转]电子对抗作战任务规划:战场平行仿真系统
    本文转自:微信公众号军桥网作战任务规划来源于美军,所对应的英文为“OperationPlanning/MissionPlanning”,此“OperationPlanning(OP)”与“MissionPlanning(MP)”是一个整体。美军对“OP”与“MP”均有详细定义,前者指战略、战役层指挥员对整体作战的行动谋划活动,后者指战术......
  • 深度学习的算法:从自动编码器到生成对抗网络
    1.背景介绍深度学习是一种人工智能技术,它旨在模拟人类大脑中的神经网络,以解决复杂的问题。深度学习的算法通常包括自动编码器、生成对抗网络和其他算法。这篇文章将详细介绍这两种算法的原理、数学模型和实例代码。1.1深度学习的历史和发展深度学习的历史可以追溯到1940年代的人工......
  • 生成对抗网络与变分自编码器:比较与应用
    1.背景介绍生成对抗网络(GenerativeAdversarialNetworks,GANs)和变分自编码器(VariationalAutoencoders,VAEs)都是深度学习领域的重要算法,它们在图像生成、数据增强、降噪等方面具有广泛的应用。这篇文章将从背景、核心概念、算法原理、实例代码、未来发展等多个方面进行全面的介绍和......
  • React Native 打包 App 发布 iOS 及加固混淆过程
       ReactNative打包App发布iOS及加固混淆过程摘要本文将介绍如何使用ReactNative打包并发布iOS应用到AppStore,并介绍了如何进行应用的加固和混淆过程。引言发布iOS应用到AppStore是一个相对复杂的过程,需要使用Mac电脑上的Xcode软件进行打包和上传......
  • ReactNative 常见问题及处理办法(加固混淆)
    ReactNative常见问题及处理办法(加固混淆)文章目录摘要引言正文ScrollView内无法滑动RN热更新中的文件引用问题RN中获取高度的技巧RN强制横屏UI适配问题低版本RN(0.63以下)适配iOS14图片无法显示问题RN清理缓存RNnavigation参数取值podinstall或者npminstall443问题处......
  • 智能决策:生成对抗网络与图像生成
    1.背景介绍随着数据量的不断增加,计算机视觉技术的发展也得到了重要的推动。图像生成和生成对抗网络(GANs)是计算机视觉领域中的两个重要技术。图像生成技术可以生成高质量的图像,而生成对抗网络则可以用于图像分类、生成和其他计算机视觉任务。本文将从背景、核心概念、算法原理、代码......
  • 鸿蒙5.0到来,能与IOS和安卓对抗吗?
    前言随着华为鸿蒙的不断更新,更多的设备类型和场景都能被支持,而且明年还将彻底抛弃安卓的底层代码,摆脱了套皮安卓的鸿蒙能否在如今的市场上与安卓和IOS抗衡?我们都清楚安卓系统是目前全球最流行的移动操作系统,拥有庞大的用户基数和应用生态。鸿蒙系统如果想要在市场上取得一席之地,就......