由于DEX文件中的数据以字节码的形式存在,所以很容易被反编译出源代码。那些反编译器(如dex2jar、apktool)是以顺序解释字节码来反编译的,如果遇到无效的字节码,便会反编译失败。DEX加花的原理就是给DEX文件中加入无效的字节码,是反编译失败。但是要保证插入无效的字节码永远不会被执行到,否则自己的程序也会崩溃。
字节码,维基百科的解释:Java 字节码(英语:Java bytecode)是Java虚拟机执行的一种指令格式。大多数操作码都是一个字节长,而有些操作需要参数,导致了有一些多字节的操作码。而且并不是所有可能的256个操作码都被使用;其中有51个操作码被保留做将来使用。除此之外,原始Java平台开发商,升阳微系统,额外保留了3个代码永久不使用。
DEX文件加花需要使用到的工具有:
IDA Pro
作用:交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件。