在接下来的时间,打算写一系列的文章,介绍与Android混淆相关一些的内容,这里先列出大概提纲,之后会陆续更新,相应的链接也会同步到这里。

1、概要

主要介绍一下本系列文章的内容及相关的知识点和工具。

2、相关基础知识

2.1 bytecode与dalvik bytecode介绍及对比

介绍了bytecode和dalvik bytecode的知识点及其差异。

2.2 相关工具的介绍与使用

介绍dex2jar、aapt、apktool、zipalign、javap、ndk等工具。

2.3 asm开源库的介绍

对asm库进行详细地介绍。

2.4 asmdex开源库的介绍

对asm库进行详细地介绍。

2.5 asm、asmdex、smali/baksmali的优劣对比

对asm、asmdex以及smali/baksmali进行比较。

3、相似度识别方案

3.1 基于代码流的相似度分析

介绍androguard中的androsim.py工具,并介绍相应的原理与实现。

3.2 基于API序列与基于变量计数的相似度分析

介绍基于API序列及基于变量计数的相似度检测工具的原理与实现。

4、代码混淆方案

4.1 反射调用与字符串加密

介绍把正常调用转换为反射调用的方案以及对常量字符串加密的方案。

4.2 指令替换与花指令

介绍指令的等价替换以及花指令的方案。

4.3 重构方法

介绍把一部分代码抽取出来作为一个方法的方案。

4.4 合并方法

介绍把多个方法合并一个方法的方案。

4.5 重构为本地方法

介绍把普通方法转换为本地方法的方案。

5、总结

针对所有方案进行比较,并给出相应的测试结果与说明等等。