罗湖做网站58,网站搭建需要多少钱?,服务质量好的网站设计制作,小程序健康码前言
恶意软件为了不让我们很容易反编译一个apk#xff0c;会对androidmanifest文件进行魔改加固#xff0c;本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件#xff0c;我们学完之后可以动手实践。
1、Androidmanife…前言
恶意软件为了不让我们很容易反编译一个apk会对androidmanifest文件进行魔改加固本文探索androidmanifest加固的常见手法以及对抗方法。这里提供一个恶意样本的androidmanifest.xml文件我们学完之后可以动手实践。
1、Androidmanifest文件组成
这里贴一张经典图主要描述了androidmanifest的组成
androidmanifest文件头部仅仅占了8个字节紧跟其后的是StringPoolType字符串常量池
为了方便我们观察分析可以先安装一下010editor的模板详细见2、010editor模板
Magic Number
这个值作为头部是经常会被魔改的需要重点关注
StylesStart
该值一般为0也是经常会发现魔改 StringPool
寻找一个字符串如何计算
1、获得字符串存放开放位置0xac172此时的0xac是不带开头的8个字节
所以需要我们加上8最终字符串在文件中的开始位置是0xb4
2、获取第一个字符串的偏移可以看到偏移为0
3、计算字符串最终存储的地方 0xb4 0xb4 0
读取字符串以字节00结束
读取到的字符为theme
帮助网安学习全套资料S信免费领取 ① 网安学习成长路径思维导图 ② 60网安经典常用工具包 ③ 100SRC分析报告 ④ 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加固
恶意软件通过修改这些魔改点来对抗反编译