aspose for.net所有版本的注册方法
本帖最后由 qands 于 2021-3-30 21:52 编辑逛论坛时发现了这个https://www.52pojie.cn/forum.php?mod=viewthread&tid=1116770
有过期注册码,开始研究了各个版本.
工具:dnspy.
19.10之前,不要太简单,略.
19.10,请在system.date.compare下断(具体是哪个compare忘了,都下断吧)
19.10之后,请在system.string.compare处下断
成品不发了,学习为主.
嗯..清清爽爽,收工
具体的调试过程我发csdn了,https://blog.csdn.net/kkndmmx/article/details/115314449
(搞的时候按文中链接吧那个过期注册码加上)
21.3的版本,补个图
夜泉 发表于 2021-4-1 20:18
大佬,按照你的帖子,我已经把 Aspose.Cell 21.3 搞定了,但是换成 Aspose.PDF 我就晕菜了,,可能是和 Asp ...
我那句话的意思是看这里
这个是局部变量,我没贴图,直接复制的文本过来所有有点乱.....
找不到flag的比较,那么说明他虚化了.得在虚拟机里绕绕. 这个比较过程大概形状长这样(这是aspose.word里的).
private void \u000F\u2001(global::\u0008 \u0002)
{
global::\u0008 u = this.\u0003\u2001();
int num = u.\u0008\u2006\u2005\u0003();
bool flag;
if (num <= 11)
{
switch (num)
{
case 2:
flag = (((\u0003\u2002)u).\u0002() == null);
goto IL_CB;
case 3:
flag = (((\u000F\u2000)u).\u0002() == 0L);
goto IL_CB;
case 4:
case 5:
break;
case 6:
flag = (((\u000E\u2000)u).\u0002() == 0);
goto IL_CB;
default:
if (num == 11)
{
flag = (((\u000E\u2001)u).\u0002() == IntPtr.Zero);
goto IL_CB;
}
break;
}
}
else
{
if (num == 19)
{
flag = (((\u000F\u2001)u).\u0002() == UIntPtr.Zero);
goto IL_CB;
}
if (num == 23)
{
flag = !Convert.ToBoolean(((global::\u0002\u2000)u).\u0002());
goto IL_CB;
}
}
flag = (u.\u0008\u2006\u2005\u0002() == null);
IL_CB:
if (flag)
{
uint u2 = ((\u0005\u2001)\u0002).\u0002();
this.\u0002(u2);
}
}
思路是这样,在断点时间比较后,他返回了bool值,总得用起来,笨办法,开2个一样的程序,一个改时间一个不改,对比这跑,哪里不一样问题就再哪里.
于是就发现,到了上面那个程序块,且num==6.
看看这个过程,大概就是判定返回值是不是null,0L,0(false)之类,然后下一步.word在case 6这里直接改成true貌似就没问题了,也不报错.但不意味着其他也能这样.毕竟这是个公用的地方,
感觉相当于IL指令的brtrue类似的指令,true就执行if flag里的,修正程序下一条语句位置,不是的话继续执行后面的代码.
有注册码的情况,在调用 System.Reflection.RuntimeMethodInfo 的地方加个类型和传值的判断,是时间类且year==2015改成2099应该就行了吧
本帖最后由 夜泉 于 2021-3-31 19:08 编辑
qands 发表于 2021-3-31 16:08
那是我没想清楚折腾搞的事情啊呀,你直接去mscorlib->CommonLanguageRuntimeLibrary->System->DateTime里 ...
吐血。。。不搞了,,,,太累了,,,,一看就是将各种表达式和运行方式什么的拆分,用invoke调用。。。
{:301_1005:}
下面放入Net4.x 控制台上,加断点
给人填坑吧。。。
class Program
{
public const string Key =
"PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPkFzcG9zZSBTY290bGFuZCB" +
"UZWFtPC9MaWNlbnNlZFRvPg0KICAgIDxFbWFpbFRvPmJpbGx5Lmx1bmRpZUBhc3Bvc2UuY2" +
"9tPC9FbWFpbFRvPg0KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlV" +
"HlwZT4NCiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1p" +
"dGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MTQ" +
"wNDA4MDUyMzI0PC9PcmRlcklEPg0KICAgIDxVc2VySUQ+OTQyMzY8L1VzZXJJRD4NCiAgIC" +
"A8T0VNPlRoaXMgaXMgYSByZWRpc3RyaWJ1dGFibGUgbGljZW5zZTwvT0VNPg0KICAgIDxQc" +
"m9kdWN0cz4NCiAgICAgIDxQcm9kdWN0PkFzcG9zZS5Ub3RhbCBmb3IgLk5FVDwvUHJvZHVj" +
"dD4NCiAgICA8L1Byb2R1Y3RzPg0KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl" +
"0aW9uVHlwZT4NCiAgICA8U2VyaWFsTnVtYmVyPjlhNTk1NDdjLTQxZjAtNDI4Yi1iYTcyLT" +
"djNDM2OGYxNTFkNzwvU2VyaWFsTnVtYmVyPg0KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+M" +
"jAxNTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4NCiAgICA8TGljZW5zZVZlcnNpb24+My4w" +
"PC9MaWNlbnNlVmVyc2lvbj4NCiAgICA8TGljZW5zZUluc3RydWN0aW9ucz5odHRwOi8vd3d" +
"3LmFzcG9zZS5jb20vY29ycG9yYXRlL3B1cmNoYXNlL2xpY2Vuc2UtaW5zdHJ1Y3Rpb25zLm" +
"FzcHg8L0xpY2Vuc2VJbnN0cnVjdGlvbnM+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5GT" +
"zNQSHNibGdEdDhGNTlzTVQxbDFhbXlpOXFrMlY2RThkUWtJUDdMZFRKU3hEaWJORUZ1MXpP" +
"aW5RYnFGZkt2L3J1dHR2Y3hvUk9rYzF0VWUwRHRPNmNQMVpmNkowVmVtZ1NZOGkvTFpFQ1R" +
"Hc3pScUpWUVJaME1vVm5CaHVQQUprNWVsaTdmaFZjRjhoV2QzRTRYUTNMemZtSkN1YWoyTk" +
"V0ZVJpNUhyZmc9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+";
static void Main(string[] args)
{
#region 加断点地方
DateTime d1 = DateTime.Now; DateTime d2 = DateTime.Now;
DateTime.Compare(d1, d2);
string.Compare("", "");
var d = d1 > d2;
#endregion
var ms = (Stream)new MemoryStream(Convert.FromBase64String(Key));
(new License()).SetLicense(ms);
}
} 大佬膜拜 :lol 楼主你好啊,我到你的CSDN上看了,想请教一下像你CSDN截图中的这种标识符都被加密了,有什么办法能解密出来吗?我有一个软件加密方式和你这个一样,试了de4dot之类的都无法解密。 大佬,献上我的膝盖!{:1_921:} 由于我的不严谨,弄完aspose.cell就以为所有系列产品都这样.但刚刚试了试aspose.ocr,他却不是在string.compare里判断的,而是在datetime里的 operator >里比较的.如下图
因此大家下断时,这几处都下吧. 没断下来的时候,退一步到 System.Reflection.RuntimeMethodInfo里下断不停F5吧,总会出现的.如图
大白痴先生 发表于 2021-3-30 23:08
楼主你好啊,我到你的CSDN上看了,想请教一下像你CSDN截图中的这种标识符都被加密了,有什么办法能解密出来 ...
能调试你管它的.....比OD环境好多了吧
(其实我也不熟哈哈) 本帖最后由 夜泉 于 2021-3-31 01:01 编辑
我也搞过,,,这个太累了,,,,前一次搞了一天,晚上头都晕晕的。。。 膜拜大佬 萌新整在学习中 qands 发表于 2021-3-30 23:30
能调试你管它的.....比OD环境好多了吧
(其实我也不熟哈哈)
那能解密的话不是看的更清楚嘛,现在是能调试,但是很不容易看清楚 大白痴先生 发表于 2021-3-31 02:22
那能解密的话不是看的更清楚嘛,现在是能调试,但是很不容易看清楚
那不是解密的问题,而是编译时变量方法什么的人家就不带名,或者就带的看着像乱码的名
你点开dnspy的IL编辑栏看,自己写的正常的是有名字的,而加过花的是没名字的如图
这你怎么恢复啊...最多像de4dot那样,class1,class2...