java黑客代码 黑客必备的代码( 九 )


数据混淆 图5 改变数据访问数据混淆是对程序使用的数据进行混淆 。混淆的方法也有多种 , 主要可以分为改变数据存储及编码(Store and Encode Transform)、改变数据访问(Access Transform) 。
改变数据存储和编码可以打乱程序使用的数据存储方式 。例如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等 。对于一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等 。
另外一种方式是改变数据访问 。例如访问数组的下标时,我们可以进行一定的计算,图5就是一个例子 。
在实践混淆处理中,这两种方法通常是综合使用的,在打乱数据存储的同时,也打乱数据访问的方式 。经过对数据混淆 , 程序的语义变得复杂了,这样增大了反编译的难度 。
控制混淆控制混淆就是对程序的控制流进行混淆,使得程序的控制流更加难以反编译,通常控制流的改变需要增加一些额外的计算和控制流,因此在性能上会给程序带来一定的负面影响 。有时,需要在程序的性能和混淆程度之间进行权衡 。控制混淆的技术最为复杂,技巧也最多 。这些技术可以分为如下几类:增加混淆控制 通过增加额外的、复杂的控制流 , 可以将程序原来的语义隐藏起来 。例如,对于按次序执行的两个语句A、B,我们可以增加一个控制条件,以决定B的执行 。通过这种方式加大反汇编的难度 。但是所有的干扰控制都不应该影响B的执行 。图6就给出三种方式,为这个例子增加混淆控制 。
图6 增加混淆控制的三种方式控制流重组 重组控制流也是重要的混淆方法 。例如,程序调用一个方法,在混淆后 , 可以将该方法代码嵌入到调用程序当中 。反过来,程
java黑客代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于黑客必备的代码、java黑客代码的信息别忘了在本站进行查找喔 。

推荐阅读