我们都知道JAVA是一种解析型语言,这就决定JAVA文件编译后不是机器码,而是一个字节码文件,也就是CLASS文件.而这样的文件是存在规律的,经过反编译工具是可以还原回来的.例如Decafe、FrontEnd,YingJAD和Jode等等软件.下面是<
我们通过反编译工具是可以还原出以上源代码的.而通过简单的分析,我们也能自己写出源代码的.
invokestatic为虚拟机指令,作用是:调用类(static)方法,形式如下
Class Name : cp_info#1
这里我简单介绍一下parseImage(Ljava/lang/String;)[S 的意思.
这就是parseImage这个函数的运行,我们反过来看看parseImage的原型就明白了
short [] parseImage(String)
那么Ljava/lang/String;就是说需要传入一个String对象,而为什么前面要有一个L呢,这是JAVA虚拟机用来表示这是一个Object.如果是基本类型,这里就不需要有L了.然后返回为short的一维数组,也就是对应的[S.是不是很有意思,S对应着Short类型,而"["对应一维数组,那有些朋友要问了,两维呢,那就"[[",呵呵,是不是很有意思.
好了,调用了函数,返回的值要保存下来吧.那么就是第三行要做的事情了.
首先要明确,哪些数据是核心机密数据,不能让普通员工轻易接触到的,即使是研发型公司的代码,也是会划分等级的,要在保证员工的工作效率的前提下,对代码实施保护措施.
下面简单谈一下我的看法,讲讲如何防止员工的代码泄露.
首先要明确以下两点:
①.、不影响被防范的成员(比如新程序员)工作.让其能正常运行、调试、查看日志等.
再来看看有哪些具体做法:
签署保密协议
对源代码分级,清楚知道什么是需要保护的
为版本管理服务器上的工程设置读取密码
源码版本控制,按照职责和权限进行划分
确保架构做分层
屏蔽USB和光驱
每人两台电脑,分别连接不同网络
封闭式开发、禁止上互联网
使用加密软件
使用加水印功能
使用云桌面技术
实施网络隔离
......
当然,每个公司会根据自身的实际情况来选择一种适合的方法,前提是不影响员工工作效率,不能让员工产生抵触情绪.公司的价值都是员工创造的,所以一定要秉着以人为本的原则,让员工对公司忠诚,减少离职,这才是利益最大化的方法.
在以上这些方法中,个人较为推荐的是使用云桌面或者实施网络隔离,通过云桌面实现数据不落地,防止被拷贝;实施网络隔离可以有效阻断数据的外泄.之前看过<<企业网络隔离建设指南>>,感觉还不错,推荐给大家参考一下.
一般走代码混淆就是为了保护源代码,让别人不至于通过反编译轻易的获得源代码
Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分析别人的代码.本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码.
第一段:为什么要加密?
对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们唯一需要了解的就是Java的ClassLoader对象.当然,在加密过程中,有关Java Cryptography Extension(JCE)的知识也是必不可少的.
有几种技术可以"模糊"Java类文件,使得反编译器处理类文件的效果大打折扣.然而,修改反编译器使之能够处理这些经过模糊处理的类文件并不是什么难事,所以不能简单地依赖模糊技术来保证源代码的安全.