信息安全资料Android DEX安全攻防战.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

文章链接:/jiazhijun/article/details/9428861

作者:Jack_Jia邮箱:309zhijun@163.com

英文原版:/papers/DexEducation-PracticingSafeDex.pdf

该文章发表于BlackHat2012,虽然内容不够新鲜,也许好多方法目前已经失效,但是仍然会给我们反逆向方面很多的启示!

一、DEX相关基础知识

1、什么是DEX?

DEX是DalvikEXecutable的简称。

打包.class文件为单一DEX文件并运行于Dalvik虚拟机。

DEX文件打包进APK文件中(本质上是jar或zip文件)。

安装时,系统提取DEX文件进行检查和验证。

第一次运行时,系统完成DEX优化,转换成odex文件。

odex文件存放在/data/dalvik-cache目录并在执行时加载进内存执行。

2、DEX文件格式(查看更多内容请访问:/androidsecurity/article/details/8664778)

3、如何查看DEX文件

目前有以下工具可以完成DEX文件的反编译。

二、攻击者隐藏软件行为的方法

攻击者经常采用以下方式隐藏软件的行为:

1、使用反射调用敏感API

该种方式能够使攻击者“隐藏”敏感API调用。但是这种方式只需要查看是否利用JAVA反射即可很容易的被识破。

如果配合代码混淆技术,就会增加自动化识别的难度。对付这种“隐藏”方式,动态分析会更简单一些。

2、代码逻辑“藏匿”在资源文件中

可以通过修改文件后缀名隐藏代码逻辑,如下图:

通过文件后缀隐藏可以通过file命令查看文件类型是否与后缀匹配很容易识别。

我们还可以做的更加高级一点。下图将ELF可执行二进制文件附加在有效的图片文件中,通过file指令得到正确的文件类型,且该图片可以正常显示:

该种隐藏方式需要我们更加深入的查看所有的资源文件。看着是jpg图片文件,但并不一定全是(永远不要相信自己的眼睛)。

也许还有其它更高级的隐藏恶意代码的方法。

3、使用DexClassLoader动态加载技术

可以使用AndroidDexClassLoader完成DEX的动态加载,DEX文件可以附属在assert或raw目录也可以运行时从网络下载。

三、Android反逆向分析之旅

我们可以利用逆向分析工具实现上的缺陷来触发其奔溃,从而达到反逆向分析的目的。

Android反逆向分析的目标:

Baksmali-使用最广泛的DEX反编译工具(apktool/antilvl等使用)(/p/smali/)

dex2jar-可以把DEX反编译成jar的工具,然后通过JD-GUI查看。(/p/dex2jar/)

IDAPro-(这个就不在介绍了吧!)(/index.shtml)

androguard-也是比较流行的。(/p/androguard/)

1、构建DEXlinksection触发baksmali工具崩溃(DEX文件结构请查看/androidsecurity/article/details/8664778)

由于baksmali工具不支持DEX文件的linksection,所以我们可以构建DEXlinksection触发baksmali工具奔溃。如下图:

该方式常用于开发者阻止破解者逆向分析代码逻辑。该方法已经被Lohan+(AntiLVL)/jcase/和其它项目中使用。但是这种方式也有明显的缺点,可以根据异常信息很容易的修复分析工具。

2、利用已知的JARhack方法

由于APK本质上就是zip/jar包,所以我们也可以利用已知的JARhack方法。

JAR对文件名的长度是没有现在的,但是操作系统要求文件名不能大于255;我们可以通过构建大于255字符的长类名来达到反逆向的目的。

如何构建大于255的长类名呢?首先我们看一下DEXClassDefItem的格式:

我们可以通过以下方式构建大于255的长类名:

1、在源代码中添加大于255的字符串A。

2、编译源代码,修改DEX文件头,修改Classdescriptor_id为字符串A的String_idx

下图是修改前后比较:

修改后的APK能够正

您可能关注的文档

文档评论(0)

wlj2025 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档