懒得折腾了
太麻烦了,不靠谱
Java代码里没找到验证的部分
很多验证都是在调用resource下的几个程序
而这几个程序居然用OpenSSL。。。
DSA签名啊。。。
=============================================================
RegisterWizard.class:
String str1 = null;
if (this.a.a())
try
{
File localFile = File.createTempFile("ZGLicense", null);
localFile.deleteOnExit();
str1 = localFile.getPath();
String str2 = str1;
1 local1 = new 1(this, str2);
getContainer().run(true, true, local1);
}
catch (Exception localException)
{
CommonUIPlugin.a(localException);
return false;
}
else
str1 = this.a.e();
RegisterWizardPage1.classprivate RegisterWizardPage1 a;a.a(); -> 返回 a.n
a.n:
this.n = this.b.getSelection();a.e(); -> 返回 a.r
a.r:
this.r = str1;----->
String str1 = this.l.getText().trim();
所以,a.e() 返回输入的文件名
int i = GuardLicense.a(str1, GuardConsole.b().newOutputStream(), null);GuardConsole.b():单件模式初始化对象
直接看 GuardLicense.class 的
public static int a(String paramString, OutputStream paramOutputStream, IProgressMonitor paramIProgressMonitor)
int i2 = ZendUtility.g;// -> ZendUtility.g 一个static 的 int
String str = new File(ZendEncoder.a().d()).getParent();
// -> ZendEncoder.a().d() : .a()初始化对象,.d()是继承 ZendUtility 的 d()方法
代码如下
String str1 = GuardCorePlugin.a().getBundle().getSymbolicName();
StringBuffer localStringBuffer = new StringBuffer();
localStringBuffer.append("/resources/");
localStringBuffer.append(c());
// 这里c()返回的是 GuardEngine的文件名,Windows下加了 .exe 的扩展名 String str2 = localStringBuffer.toString();
URL localURL = FileLocator.find(Platform.getBundle(str1), new Path(str2), null);
if (localURL != null)
{
localURL = FileLocator.resolve(localURL);
String str3 = localURL.getFile();
this.b = new Path(str3).toOSString();
}
// 后边这个等着查javadoc吧回来
String str = new File(ZendEncoder.a().d()).getParent();
File localFile1 = new File(str, "zend_guard.zl");
File localFile2 = null;
File localFile3 = new File(paramString);
boolean bool = localFile1.getCanonicalPath().equals(localFile3.getCanonicalPath());
按照File的参数判断,str这个应该是取resources目录的绝对路径,或者类似的下边的代码是处理文件存在的时候,将文件备份成***.bak文件
if ((localFile1.exists()) && (!(bool)))
{
localFile2 = new File(localFile1.getAbsolutePath() + ".bak");
localFile1.renameTo(localFile2);
localFile1 = new File(str, "zend_guard.zl");
}
========================================================================================
从Java代码里很难找到验证相关的代码
看了看resources下的几个exe文件
都有license验证的提示
Ollydbg载入,看字符串参考
满眼全是 OpenSSL相关的东西
phpchina的sample license的内容,看着像是不对称加密的数据
相对而言,zendenc_sign的文件最小,内容较少
考虑调试这个东西
但是,从提示看
license的验证更像是验证证书的签名和有效性
而后的加密,貌似就是用这个分发的证书再对文件做签名
很诡异
如果真是证书的方式,那就可以不用考虑了
伪造证书、签名肯定不靠谱
No comments:
Post a Comment