针对Java易遭受逆向工程攻击的原因

针对Java易遭受逆向工程攻击的原因

针对Java易遭受逆向工程攻击的原因,将向大家介绍目前市场上关于防止Java免受逆向工程攻击的集中措施,同时指出这几种措施在防范逆向工程攻击的时候存在的不足之处。

首先是板载措施,它并不足以防止逆向工程。大多数虚拟机都包含一些使逆向工程复杂化的功能。Java允许用户在JAR存档中提供的每个类上设置一个数字证书,以确保原始文件没有被更改。虽然这样做并无害处,但该功能相当容易清除,并且仅针对静态补丁方法提供保护,而静态补丁只是攻击场景中的一小部分。而且,这种方法并不能针对运行时应用于内存的补丁提供保护。

Java还通过虚拟机执行字节码验证器,该验证器在执行通过的字节码之前对其进行自动分析。这可以防止执行“奇怪”的代码,也使字节码注入变得更加困难。

然而,尽管这些措施给攻击者造成了困难,但对于充分保护知识产权还远远不够。

其次是Java封装技术。开发人员通常用以防止.class文件静态分析和字节码反汇编的一种方法是封装,这种方法通过应用加密/解密完整文件来防止对类文件的分析。通过封装,开发人员将受保护文件的原始加载器更换为处理加密/解密的自定义加载器。加密使用将.class文件从标准Java .class格式更改为仅“密钥”所有者可读格式的算法来防止对这些文件的分析。然而,.class文件的字节码在一个内存位置中仍保持可读,在系统加载器尝试加载该类之前的时刻,通常可从该位置访问字节码。如果黑客能够找到那个内存位置,HASP,就可以访问原始状态的该类,Safenet。

最后,防止黑客攻击该内存位置需要第二种技术,称为混淆。混淆可产生一个更加复杂、难于理解并且与原始代码具有相同行为方式的代码版本。有几种不同类型的混淆方法可用于指令集:程序员可以通过替换二进制代码中的所有字符串来混淆代码,这样就更加难以找到一个好的切入点来开始逆向工程攻击。他们可以通过插入指向垃圾代码的跳转并返回来迷惑攻击者,或混淆源代码或字节码。

开发人员也可以选择使用名为Const2Code转换的技术来混淆常量。例如,密钥有时在应用程序中存储为一组字节。如果黑客确定了这些字节的位置,他们就可以访问这些字节。为混淆一个常量(如密钥),Const2Code算法将常量转换为可产生同一常量的多个不同的命令。

例如,为了在源代码段中隐藏常量cst=0x12345678,可以将该常量简单地分为几个算术运算,如加、减等等。A = 0x9ABCDF00;B=0x2;C=0x135799E00。现在让我们使用这三个变量重新计算出常量0x12345678。我们的原始常量为:cst = C / B + A – 0x88888888 – A + 1000= 0x12345678。如果应用程序仅使用该例程来计算常量,攻击者就必须理解其中的含义,IKEY 1032,而不是简单地获取该常量。

java加密

.net加密

转载于:https://my.oschina.net/u/915813/blog/143034

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110083.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python 生成随机数_python 随机字符串

    Python 生成随机数_python 随机字符串python中生成随机数主要使用random模块和numpy库中的random函数。前者主要用于生成随机数和实现序列中随机数和随机数列的挑选,后者用来生成a*b维的随机矩阵。一、random模块random模块中将近有7个函数都是可以用来生成随机数,列举如下:1.random.random()功能:随机生成一个[0,1)的浮点数示例:importrandomnumber=random.random()print(number)print(‘%.2f’%num

    2022年9月28日
    4
  • 前端vue面试题2021_vue框架面试题

    前端vue面试题2021_vue框架面试题一.自我介绍(我是谁来自哪里,今天来的目的,面试的岗位是什么,几年的工作经验,掌握的技术栈有哪些,开发过什么项目,项目中负责的板块是什么)面试官您好!我叫XXX,来自XXX,很荣幸能来我们公司面试,我从事前端开发有3年了,目前掌握的技术有html,css,js,ajax,vue,小程序,参与过各种类型的项目。我做过的项目有A,B,C,D,E那么最近做的一个项目是XXX在这个项目中我主要负责的板块是XXX面试官您这边还有什么想要了解的么。二.项目功能提问vue后台项目(这几个功能点要求

    2022年8月28日
    2
  • Java开发经验谈:北大青鸟培训java学费

    Java开发经验谈:北大青鸟培训java学费Java成长笔记大致内容如下:0-1年入门:Java基础复盘(面向对象+Java的超类+Java的反射机制+异常处理+集合+泛型+基础IO操作+多线程+网络编程+JDK新特性)Web编程初探(Servlet+MySQL数据库+商品管理系统实战)SSM从入门到精通(Spring+SpringMVC+Mybatis+商品管理系统实战-SSM版)SpringBoot快速上手(SpringBoot+基于SpringBoot的商品管理系统实战)零距离互联网项目实战(Linux+Redis+双十一秒杀实战

    2022年7月8日
    16
  • appnode默认关闭allow_url_fopen,导致无法使用file_get_contents

    appnode默认关闭allow_url_fopen,导致无法使用file_get_contents一、全局设置网站管理-运行环境管理-默认参数-php-php安全二、单站设置网站管理-选中网站-php-php安全

    2022年7月21日
    13
  • pycharm如何配置_网络配置异常怎么修复

    pycharm如何配置_网络配置异常怎么修复PyCharm配置示例1、全局设置:这里是全局设置,也可在每个项目里面单独设置点击右下角的Configure选择Preferences1、设置背景颜色与显示内存大小:2、设置不默认打开上次的工程3、设置显示方法右边分割线:4、设置自动引包:5、设置显示方法缩进线6、设置字体与字体大小:7、设置文件编码格式:请注意,这一步很重要,不要坑队友!8、测试本机是…

    2022年8月28日
    2
  • SQLyog详细使用教程[通俗易懂]

    SQLyog详细使用教程[通俗易懂]SQLyog详细使用教程

    2022年4月18日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号