Java免受逆向工程攻击的措施
来源:互联网 发布:彩票数据库中心预测 编辑:程序博客网 时间:2024/06/06 05:09
首先是板载措施,它并不足以防止逆向工程。大多数虚拟机都包含一些使逆向工程复杂化的功能。Java允许用户在JAR存档中提供的每个类上设置一个数字证书,以确保原始文件没有被更改。虽然这样做并无害处,但该功能相当容易清除,并且仅针对静态补丁方法提供保护,而静态补丁只是攻击场景中的一小部分。而且,这种方法并不能针对运行时应用于内存的补丁提供保护。
Java还通过虚拟机执行字节码验证器,该验证器在执行通过的字节码之前对其进行自动分析。这可以防止执行"奇怪"的代码,也使字节码注入变得更加困难。
然而,尽管这些措施给攻击者造成了困难,但对于充分保护知识产权还远远不够。
其次是Java封装技术。开发人员通常用以防止。class文件静态分析和字节码反汇编的一种方法是封装,这种方法通过应用加密/解密完整文件来防止对类文件的分析。通过封装,开发人员将受保护文件的原始加载器更换为处理加密/解密的自定义加载器。加密使用将。class文件从标准Java .class格式更改为仅"密钥"所有者可读格式的算法来防止对这些文件的分析。然而,.class文件的字节码在一个内存位置中仍保持可读,在系统加载器尝试加载该类之前的时刻,通常可从该位置访问字节码。如果黑客能够找到那个内存位置,就可以访问原始状态的该类。
最后,防止黑客攻击该内存位置需要第二种技术,称为混淆。混淆可产生一个更加复杂、难于理解并且与原始代码具有相同行为方式的代码版本。有几种不同类型的混淆方法可用于指令集:程序员可以通过替换二进制代码中的所有字符串来混淆代码,这样就更加难以找到一个好的切入点来开始逆向工程攻击。他们可以通过插入指向垃圾代码的跳转并返回来迷惑攻击者,或混淆源代码或字节码。
开发人员也可以选择使用名为Const2Code转换的技术来混淆常量。例如,密钥有时在应用程序中存储为一组字节。如果黑客确定了这些字节的位置,他们就可以访问这些字节。为混淆一个常量(如密钥),Const2Code算法将常量转换为可产生同一常量的多个不同的命令。
例如,为了在源代码段中隐藏常量cst=0x12345678,可以将该常量简单地分为几个算术运算,如加、减等等。A = 0x9ABCDF00;B=0x2;C=0x135799E00.现在让我们使用这三个变量重新计算出常量0x12345678.我们的原始常量为:cst = C/B + A – 0x88888888 – A + 1000= 0x12345678.如果应用程序仅使用该例程来计算常量,攻击者就必须理解其中的含义,而不是简单地获取该常量。
- Java免受逆向工程攻击的措施
- java mybaits 的逆向工程
- 如何才能使您的网络免受黑客攻击
- 保护你的网站免受这七大常见黑客攻击
- Java逆向工程
- java 逆向工程
- 防止DNS放大攻击的有效措施
- 关于ARP攻击的防护措施
- MFC的逆向工程
- 逆向工程的应用
- mybatis 的逆向工程
- mybatis的逆向工程
- mybatis的逆向工程
- mybatis的逆向工程
- Mybatis的逆向工程
- powerdesigner的逆向工程
- MyBatis 的逆向工程
- mybatis的逆向工程
- Linux 进程控制--- 概述
- USBHID之内核抢占USB驱动问题
- MySQL中的datetime与timestamp比较
- 开源 免费 java CMS - FreeCMS-数据对象-answer
- vim使用
- Java免受逆向工程攻击的措施
- HTML的下拉框
- MYSQL:Inert、IGNORE、REPLACE INTO的功能与用法
- GridView多级复选框级联选中
- Ubuntu安装过程之磁盘分区图文教程
- .NET Graphics.MeasureString 的使用
- 1年内安卓设备数量将达10亿
- mvvm 绑定textbox焦点丢失问题
- 一切我们认为我们知道关于三星的Galaxy S4