数据混淆 图5 改变数据访问数据混淆是对程序使用的数据进行混淆 。混淆的方法也有多种 , 主要可以分为改变数据存储及编码(Store and Encode Transform)、改变数据访问(Access Transform) 。
改变数据存储和编码可以打乱程序使用的数据存储方式 。例如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等 。对于一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等 。
另外一种方式是改变数据访问 。例如访问数组的下标时,我们可以进行一定的计算,图5就是一个例子 。
在实践混淆处理中,这两种方法通常是综合使用的,在打乱数据存储的同时,也打乱数据访问的方式 。经过对数据混淆 , 程序的语义变得复杂了,这样增大了反编译的难度 。
控制混淆控制混淆就是对程序的控制流进行混淆,使得程序的控制流更加难以反编译,通常控制流的改变需要增加一些额外的计算和控制流,因此在性能上会给程序带来一定的负面影响 。有时,需要在程序的性能和混淆程度之间进行权衡 。控制混淆的技术最为复杂,技巧也最多 。这些技术可以分为如下几类:增加混淆控制 通过增加额外的、复杂的控制流 , 可以将程序原来的语义隐藏起来 。例如,对于按次序执行的两个语句A、B,我们可以增加一个控制条件,以决定B的执行 。通过这种方式加大反汇编的难度 。但是所有的干扰控制都不应该影响B的执行 。图6就给出三种方式,为这个例子增加混淆控制 。
图6 增加混淆控制的三种方式控制流重组 重组控制流也是重要的混淆方法 。例如,程序调用一个方法,在混淆后 , 可以将该方法代码嵌入到调用程序当中 。反过来,程
java黑客代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于黑客必备的代码、java黑客代码的信息别忘了在本站进行查找喔 。
推荐阅读
- flutter书籍下载,flutter中文教程
- 企业如何做营销渠道策划的简单介绍
- 视频号怎么发产品链接,视频号怎么发产品链接给别人
- 一加安卓桌面布局图标,安卓手机显示桌面布局已锁定
- jquery对象自定义属性,jquery有自定义选择器吗
- java家庭记账源代码 javaweb记账管理系统
- 京东买的硬盘怎么保修,京东保修服务怎么用
- 美国dns服务器列表,美国ip和dns
- 超能陆战队安卓版本,超能陆战队安卓版本怎么下载