吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9449|回复: 32
收起左侧

[.NET逆向] aspose for.net所有版本的注册方法

  [复制链接]
qands 发表于 2021-3-30 21:32
本帖最后由 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的版本,补个图
image.png



免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
fujianguo + 1 已经处理,感谢您对吾爱破解论坛的支持!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
eddiecgc + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qands 发表于 2021-4-1 23:04
夜泉 发表于 2021-4-1 20:18
大佬,按照你的帖子,我已经把 Aspose.Cell 21.3 搞定了,但是换成 Aspose.PDF 我就晕菜了,,可能是和 Asp ...

我那句话的意思是看这里
image.png
这个是局部变量,我没贴图,直接复制的文本过来所有有点乱.....

找不到flag的比较,那么说明他虚化了.得在虚拟机里绕绕. 这个比较过程大概形状长这样(这是aspose.word里的).
[C#] 纯文本查看 复制代码
	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:02
本帖最后由 夜泉 于 2021-3-31 19:08 编辑
qands 发表于 2021-3-31 16:08
那是我没想清楚折腾搞的事情啊呀,你直接去mscorlib->CommonLanguageRuntimeLibrary->System->DateTime里 ...

吐血。。。不搞了,,,,太累了,,,,一看就是将各种表达式和运行方式什么的拆分,用invoke调用。。。


下面放入Net4.x 控制台上,加断点

给人填坑吧。。。

[C#] 纯文本查看 复制代码
    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);
        }
    }
xiaocai2021 发表于 2021-3-30 22:33
大白痴先生 发表于 2021-3-30 23:08
楼主你好啊,我到你的CSDN上看了,想请教一下像你CSDN截图中的这种标识符都被加密了,有什么办法能解密出来吗?我有一个软件加密方式和你这个一样,试了de4dot之类的都无法解密。
eddiecgc 发表于 2021-3-30 23:11
大佬,献上我的膝盖!
 楼主| qands 发表于 2021-3-30 23:26
由于我的不严谨,弄完aspose.cell就以为所有系列产品都这样.但刚刚试了试aspose.ocr,他却不是在string.compare里判断的,而是在datetime里的 operator >里比较的.如下图
image.png

因此大家下断时,这几处都下吧. 没断下来的时候,退一步到 System.Reflection.RuntimeMethodInfo里下断不停F5吧,总会出现的.如图

image.png



 楼主| qands 发表于 2021-3-30 23:30
大白痴先生 发表于 2021-3-30 23:08
楼主你好啊,我到你的CSDN上看了,想请教一下像你CSDN截图中的这种标识符都被加密了,有什么办法能解密出来 ...

能调试你管它的.....比OD环境好多了吧
(其实我也不熟哈哈)
夜泉 发表于 2021-3-31 00:58
本帖最后由 夜泉 于 2021-3-31 01:01 编辑

我也搞过,,,这个太累了,,,,前一次搞了一天,晚上头都晕晕的。。。
PrincessSnow 发表于 2021-3-31 01:02
膜拜大佬 萌新整在学习中
大白痴先生 发表于 2021-3-31 02:22
qands 发表于 2021-3-30 23:30
能调试你管它的.....比OD环境好多了吧
(其实我也不熟哈哈)

那能解密的话不是看的更清楚嘛,现在是能调试,但是很不容易看清楚
 楼主| qands 发表于 2021-3-31 03:52
大白痴先生 发表于 2021-3-31 02:22
那能解密的话不是看的更清楚嘛,现在是能调试,但是很不容易看清楚

那不是解密的问题,而是编译时变量方法什么的人家就不带名,或者就带的看着像乱码的名
你点开dnspy的IL编辑栏看,自己写的正常的是有名字的,而加过花的是没名字的如图
image.png



image.png

这你怎么恢复啊...最多像de4dot那样,class1,class2...
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-25 01:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表