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:
评论加载中...
|
上一篇: ACCESS数据库暴库的解决方法