??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久一区,亚洲国产成人久久,在线观看av中文http://www.aygfsteel.com/javarun/zh-cnSun, 18 May 2025 04:22:04 GMTSun, 18 May 2025 04:22:04 GMT60从常见的几种方式看保护java代码http://www.aygfsteel.com/javarun/archive/2010/07/09/325645.htmljavarunjavarunFri, 09 Jul 2010 06:00:00 GMThttp://www.aygfsteel.com/javarun/archive/2010/07/09/325645.htmlhttp://www.aygfsteel.com/javarun/comments/325645.htmlhttp://www.aygfsteel.com/javarun/archive/2010/07/09/325645.html#Feedback1http://www.aygfsteel.com/javarun/comments/commentRss/325645.htmlhttp://www.aygfsteel.com/javarun/services/trackbacks/325645.html在java代码中往往包含着一 些非常敏感的信息Q有些关pd开发者的利益Q有些可能因Z用环境不同而关pd软g用户的利益,于是QjavaE序是赤膊上阵还是全副武装这个现实问题就 摆在了java开发h员的面前Q所以在q种情况下,从开发商和用户两斚w角度考虑Q都非常有必要对javaE序q行保护。以下从技术角度就常见的保护措? 和常用工h看看如何有效保护java代码Q?/p>
  1. java包装成exe

    特点Q将jar包装成可执行文gQ便于用,但对javaE序没有M保护?br />
    不要以ؓ生成了exe和普通可执行文g效果一样了。这些包装成exe的程序运行时都会jar文g释放C时目录,很容易获取?br />
    常用的工hexe4j、jsmooth、NativeJ{等。jsmooth生成的exeq行时时目录在exe所在目录中或是用户临时目录 中;exe4j生成的exeq行时时目录在用户临时目录中;NativeJ生成的exe直接用winrar打开Q然后用zip格式修复成一个jar? Ӟ得C原文件。如果只是ؓ了用和发布方便Q不需要保护java代码Q用这些工h很好的选择?br />
  2. javah?br />
    特点Q用一U或多种处理方式class文g、java源代码进行؜淆处理后生成新的classQh后的代码不易被反~译Q而反~译后的代码难以? d理解?br />
    q类h器工具很多,而且也很有成效?br />
    ~点Q虽然؜淆的代码反编译后不易LQ但对于有经验的人或是多׃旉Q还是能扑ֈ或计出你代码中隐藏的敏感内容,而且在很多应用中不是全部代码都能 h的,往往一些关键的库、类名、方法名、变量名{因使用要求的限制反而还不能h?br />
  3. 隔离javaE序到服务端

    特点Q把javaE序攑ֈ服务端,让用户不能访问到class文g和相关配套文Ӟ客户端只通过接口讉K?br />
    q种方式在客?服务模式的应用中能较好地保护java代码?br />
    ~点是:必须是客?服务模式Q这U特炚w制了此种方式的用范_客户端因为逻辑的暴露始l是较ؓ薄弱的环节,所以访问接口时一般都需要安全性认证?br />
  4. java加密保护

    特点Q自定义ClassLoaderQ将class文g和相x件加密,q行时由此ClassLoader解密相关文gq装载类Q要起到保护作用必须自定 义本C码执行器自定义ClassLoader和加密解密的相关cd配套文g也保护v来?br />
    此种方式能很有效C护java代码?br />
    ~点Q可以通过替换JRE包中与类装蝲相关的javacL虚拟机动态库截获java字节码?br />
    jar2exe属于q类工具?br />
  5. 提前~译技?AOT)

    特点Q将java代码静态编译成本地机器码,q通用JRE?br />
    此种方式能够非常有效C护java代码Q且E序启动比通用JVM快一炏V?br />
    h代表性的是GNU的gcjQ可以做到对java代码完全提前~译Q但gcj存在诸多局限性,如:对JRE 5不能完整支持、不支持JRE 6及以后的版本?br />
    ׃javaq_的复杂性,做到能及时支持最新java版本和JRE的完全提前编译是非常困难的,所以这cd具往往采取灉|方式Q该用即时编译的地方q是 要用Q成为提前编译和x~译的؜合体?br />
    ~点Q由于与通用JRE的差异和javaq用中的复杂性,qjavaE序中的所有jar都能得到完全的保护;只能使用此种工具提供的一个运行环境,如果 工具更新滞后或你需要特定版本的JREQ有可能得不到此U工L支持?br />
    Excelsior JET属于q类工具?br />
  6. 使用jni方式保护

    特点Q将敏感的方法和数据通过jni方式处理?br />
    此种方式?#8220;隔离javaE序到服务端”有些cMQ可以看作把需要保护的代码和数?#8220;隔离”到动态库中,不同的是可以在单机程序中q用?br />
    ~点和上q?#8220;隔离javaE序到服务端”cM?br />
  7. 不脱JRE的综合方式保?br />
    特点Q非提前~译Q不qJREQ采用多UY保护方式Q从多方面防止javaE序被窃取?br />
    此种方式׃采取了多U保护措施,比如自定义执行器和装载器、加密、JNI、安全性检、生成可执行文g{等Q保护力度大大增强Q同栯够非常有效地? 护java代码?br />
    ~点Q由于jar文g存在方式的改变和javaq用中的复杂性,qjavaE序中的所有jar都能得到完全的保护;很有可能q不支持所有的JRE版本?br />
    JXMaker属于此类工具?br />
  8. 用加密锁g保护

    特点Q用与g相关的专用程序将java虚拟机启动程序加壻I虚拟机配套文g和javaE序加密Q启动的是加壳程序,由加壳程序徏立一个与g相关? 受保护的q行环境Qؓ了加强安全性可以和加密锁内植入的程序互动?br />
    此种方式与以?#8220;不脱JRE的综合方式保?#8221;怼Q只是用了专用g讑֤Q也能很好地保护java代码?br />
    ~点Q有为加密锁用户使用上不太方便,且每个安装需要附带一个?/li>

从以上描qC我们可以看出Q?/p>

  1. 各种保护方式都有其优~点Q应Ҏ实际选用
  2. 要更好地保护java代码应该使用l合的保护措?/li>
  3. 单机环境中要真正有效保护java代码Q必要有本C码程序配?/li>

当然Q安全都是相对的Q一斚w看你的保护措施和使用的工兯辑ֈ的程度,一斚w看黑客的意愿和能力,不能只从技术上保护知识产权。MQ在java 代码保护斚w可以采取各种可能的方式,不可拘惔于那些条条框框?/p>

javarun 2010-07-09 14:00 发表评论
]]>
վ֩ģ壺 ̩| | ̽| ̫| | ͷ| ̩| ̫| | | | Ͻ| Դ| | Ȫ| Ѯ| | | ʯ| | | | ױ| | ˹| Ǩ| | Ϫ| | ԰| Ͷ| | | | γ| | | | ԫ| | |