上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Androidmanifest文件加固和对抗

guduadmin251月前

前言

恶意软件为了不让我们很容易反编译一个apk,会对androidmanifest文件进行魔改加固,本文探索androidmanifest加固的常见手法以及对抗方法。

1、Androidmanifest文件组成

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

Androidmanifest文件加固和对抗,图片,第1张

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

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

Magic Number

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

Androidmanifest文件加固和对抗,图片,第2张

StylesStart

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

Androidmanifest文件加固和对抗,图片,第3张

StringPool

Androidmanifest文件加固和对抗,图片,第4张

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

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

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

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

Androidmanifest文件加固和对抗,图片,第5张

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

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

Androidmanifest文件加固和对抗,图片,第6张

读取到的字符为:theme

总结:

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

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

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

2、010editor模板

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

Androidmanifest文件加固和对抗,图片,第7张

搜索:androidmanifest.bt

Androidmanifest文件加固和对抗,图片,第8张

安装完成且运行之后:

Androidmanifest文件加固和对抗,图片,第9张

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

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

用法十分简单:

  • java -jar AXMLPrinter2.jar AndroidManifest_origin.xml

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

    Androidmanifest文件加固和对抗,图片,第10张

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

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

    使用 010editor 打开

    Androidmanifest文件加固和对抗,图片,第11张

    将其修复

    Androidmanifest文件加固和对抗,图片,第12张

    保存,再次尝试运行AXMLPrinter2

    Androidmanifest文件加固和对抗,图片,第13张

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

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

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

    Androidmanifest文件加固和对抗,图片,第14张

    将其修改回去

    Androidmanifest文件加固和对抗,图片,第15张

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

    Androidmanifest文件加固和对抗,图片,第16张

    再次去分析:

    Androidmanifest文件加固和对抗,图片,第17张

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

    Androidmanifest文件加固和对抗,图片,第18张

    Androidmanifest文件加固和对抗,图片,第19张

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

    Androidmanifest文件加固和对抗,图片,第20张

    Androidmanifest文件加固和对抗,图片,第21张

    再次运行

    Androidmanifest文件加固和对抗,图片,第22张

    成功拿到反编译后的androidmanifest.xml文件

    总结

    这个例子有三个魔改点经常出现在androidmanifest.xml加固

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

网友评论

搜索
最新文章
热门文章
热门标签
 
 最准的农历免费算命  周公解梦2345生活  亲人还活着却梦见去世了