设为主页 | 加入收藏 | 繁體中文

java验证license破解手记


  用jclasslib打开LicenseUtils.class, isFeatureConfigurated的JVM汇编代码如下:
  0 aload_0
  1 aload_1
  2 invokestatic #15
  5 istore_2
  6 iload_2
  7 ifne 12 (+5)
  10 iconst_1
  11 ireturn
  12 iload_2
  13 bipush 7
  15 if_icmpeq 24 (+9)
  18 iload_2
  19 bipush 9
  21 if_icmpne 26 (+5)
  24 iconst_0
  25 ireturn
  26 new #16
  29 dup
  30 ldc #17
  32 iload_2
  33 invokespecial #18 >
  36 athrow
  思绪:只需把条件语句
  7 ifne 12 (+5)
  NOP调即可,不让它判断非0跳转,乖乖的return 1.
  但是我不了解java的呆板码,怎样改呢?不急,去sun公司的网站下一本手册JVM Specification。
  The JavaTM Virtual Machine Specification, Second Edition. 
  http://java.sun.com/docs/books/vmspec/ 
  http://java.sun.com/docs/books/vmspec/download/vmspec.2nded.html.zip
  找到CHAPTER 9 Opcode Mnemonics by Opcode,我们要用到的呆板码如下:
  00 (0x00) nop
  03 (0x03) iconst_0
  04 (0x04) iconst_1
  28 (0x1c) iload_2
  61 (0x3d) istore_2
  172 (0xac) ireturn
  154 (0x9a) ifne
  根据我在后面的分析,只需把 
  ifne 12 这一句的三个字节nop掉即可。
  用uedit打开LicenseUtils.class,搜索
  3d1c9a0005,即以下3句。改为3d1c000000,后面的用3个NOP.只需改动2个字节就够了。
  5 istore_2
  6 iload_2
  7 ifne 12 (+5)
  把改好的LicenseUtils.class加到license.jar(zip压缩文件),替换原来的。
  测试:
  G:\editg\CPPTest65\bin>cpptest t.c
  Creating project configuration based on: builtin://VC++6.0
  Using project configuration: project://VC++6.0
  Test started: Dec 26, 2005 8:37:48 PM
  ------------------------
  ...省去几十页....
  ------------------------
  Test finished: Dec 26, 2005 8:38:02 PM
  OK了。出工。
  爆破,比力简略,在此抛砖引玉。
  希望能给初学者一点启发。
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: