能力值:
( LV2,RANK:10 )
|
-
-
2 楼
貌似flexlm.jar是由Flexnet来提供的,与你的程序没有关系吧?
不过,也可以把里面的ECC去掉,对任何程序都永远返回正确值。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
能指导下如何把ECC去掉吗,论坛上那些patch方法好像都是针对exe和dll的吧
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
如果程序使用flexlm.jar说明程序应该是java的,你试着把里面的_l_pubkey_verify函数始终返回正确看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
在反编译出的源文件\com\macrovision\flexlm\lictext下PriKey.java里面有pubkeyVerify函数,
public static boolean pubkeyVerify(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, VendorInfo paramVendorInfo, int paramInt)
throws FlexlmException
{
String str1 = initCerticom();
if (str1 == null)
throw new FlexlmException(-514, 4026);
String str2;
switch (paramInt)
{
case 2:
str2 = "sect113r1";
break;
case 3:
str2 = "ec163a02";
break;
case 4:
str2 = "ec239a03";
break;
default:
throw new FlexlmException(-515, 4027);
}
SystemConfig localSystemConfig = SystemConfig.getConfig();
localSystemConfig.setCurve(str2);
localSystemConfig.setConformance(16);
localSystemConfig.setPtCompression(2);
localSystemConfig.setFormat(10);
PublicKey localPublicKey1 = paramVendorInfo.getPublicKey(paramInt);
if (localPublicKey1 == null)
throw new FlexlmException(-515, 4028);
byte[] arrayOfByte = localPublicKey1.getEncoded();
X509EncodedKeySpec localX509EncodedKeySpec = new X509EncodedKeySpec(arrayOfByte);
KeyFactory localKeyFactory;
try
{
localKeyFactory = KeyFactory.getInstance("ECDSA");
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException1)
{
throw new FlexlmException(-515, 4029);
}
PublicKey localPublicKey2;
try
{
localPublicKey2 = localKeyFactory.generatePublic(localX509EncodedKeySpec);
}
catch (InvalidKeySpecException localInvalidKeySpecException)
{
throw new FlexlmException(-515, 4030);
}
boolean bool;
try
{
Signature localSignature = Signature.getInstance("ECDSA", str1);
localSignature.initVerify(localPublicKey2);
localSignature.update(paramArrayOfByte1);
bool = localSignature.verify(paramArrayOfByte2);//////这里验证
}
catch (NoSuchProviderException localNoSuchProviderException)
{
throw new FlexlmException(-515, 4031);
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException2)
{
throw new FlexlmException(-515, 4032);
}
catch (InvalidKeyException localInvalidKeyException)
{
throw new FlexlmException(-515, 4033);
}
catch (SignatureException localSignatureException)
{
throw new FlexlmException(-515, 4034);
}
return bool; //////////////////这里返回
}
看到有一个帖子里面说将返回值改为1就行,我想问这个打补丁的方法:
是需要将反编译出来的所有源码重新编译下(这个我不知道是否能重新编译过去),
还是也可以像程序打补丁一样,直接在原来的jar文件上只改几个字节就好?
这两种办法我都没找到详细说明的帖子,还请老大具体指导下
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
你找的位置很正确啊,始终返回true就行了啊。
至于用什么途径和方法,那就应该属于java破解的方法了,只要最后得到你要的结果,不都一样吗。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
在flexlm.jar下的\com\macrovision\flexlm\lictext中
找到prikey.class,提取出来,用ultraedit将150dac改为0004ac
在IDA中对应的是将iload 13,ireturn改为iconst_1,ireturn
函数名是pubkeyVerify
将补丁后的文件替换原来jar中的prikey.class文件
自己测试,发现可用,分享出来,同时感谢NoFlexlm老大的热情指导
最后,再问老大一个问题,我现在要破解的一个软件,里面有flexlm.jar,也有加密过的exe和dll,其中一个dll还是.net的,请问下这些个文件都需要patch掉吗?论坛里的ecc generic patcher对.net程序的patch有效么?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
在flexlm.jar下的\com\macrovision\flexlm\lictext中
找到prikey.class,提取出来,用ultraedit将150dac改为0004ac
在IDA中对应的是将iload 13,ireturn改为iconst_1,ireturn
函数名是pubkeyVerify
将补丁后的文件替换原来jar中的prikey.class文件
自己测试,发现可用,分享出来,同时感谢NoFlexlm老大的热情指导
最后,再问老大一个问题,我现在要破解的一个软件,里面有flexlm.jar,也有加密过的exe和dll,其中一个dll还是.net的,请问下这些个文件都需要patch掉吗?论坛里的ecc generic patcher对.net程序的patch有效么?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不是特别清楚你说的加密过的exe和dll是什么意思。如果是说这些程序也是flexlm保护的,那就要看程序如何去验证license了,如果最终是通过java的flexlm.jar,那你patch了flexlm.jar后可想而知。如果程序在某些地方还执行exe或者dll里的检测,那结果也可想而知了。
保险的话,看下这几个文件里有无_l_pubkey_verify函数,有则patch,没有则不用管了。
另外,你说的ECC通用patcher如果对.Net无效,也没什么好奇怪的。如果自己掌握了要patch的地方,也是非常容易的。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
感谢前辈的帖子,帮了大忙!
|
|
|