C# to C++ 等语言转换软件注册分析

查看 142|回复 10
作者:AltRick   
1、引言
最近逛论坛的时候,无意发现一款编程语言转换软件,该软件可以将现有C#语言转换成C++。同时该网站还包含其他语言转换工具,如果没有许可证,每个文件的转换输出限制为100行。正好最近有空,分析学习看看该软件的注册方式,顺便可以提高一下自己的算法分析能力,接下来让我们一起来看看。
2、查壳


1.png (27.62 KB, 下载次数: 0)
下载附件
2022-3-10 11:05 上传

.Net拖进dnspy查看


2.png (8.28 KB, 下载次数: 0)
下载附件
2022-3-10 11:08 上传

发现是.NET64,类名已经被混淆,简单看了下方法,还能看,直接动态调试。
3、调试
拖入dnspy,直接运行,窗口名称显示Free Edition,搜索


3.png (5.74 KB, 下载次数: 0)
下载附件
2022-3-10 11:16 上传

关键值为
App._g0
,查找变量分析


4.png (6.12 KB, 下载次数: 0)
下载附件
2022-3-10 11:20 上传

只需要让App._g0返回false即可,查找方法调用_g102(),需让该方法返回true


5.png (17.55 KB, 下载次数: 0)
下载附件
2022-3-10 11:27 上传

分析需要将App._g118返回false


6.png (9.46 KB, 下载次数: 0)
下载附件
2022-3-10 11:31 上传

观察分析该方法是判断软件授权时间是否过期,需要找上个方法看赋值的地方


7.png (10.08 KB, 下载次数: 0)
下载附件
2022-3-10 13:28 上传



8.png (12.73 KB, 下载次数: 0)
下载附件
2022-3-10 13:28 上传

赋值字符串首先读取加密字符串,然后去除头尾3个字符,间隔获取字符后再反序生成


9.png (12.91 KB, 下载次数: 0)
下载附件
2022-3-10 13:38 上传

两个赋值地方都是从文件反序列化读取的键值,配置文件默认保存到C盘
C:\Users\***\AppData\Roaming\***\C# to C++ Converter\C# to C++ Converter.usr
打开文件参考其他节点增加两组节点{"Key":"Order Number","Value":"12345"},{"Key":"Standard Reg Code","Value":"12345"},重新运行


10.png (13.74 KB, 下载次数: 0)
下载附件
2022-3-10 13:50 上传

该方法会联网请求注册信息


11.png (15.67 KB, 下载次数: 0)
下载附件
2022-3-10 13:56 上传



12.png (13.72 KB, 下载次数: 0)
下载附件
2022-3-10 13:58 上传

接着判断输入值长度是否大于7,是否包含‘-’、‘*’等字符,接着判断_g4082._g4107(_p0);


13.png (12.41 KB, 下载次数: 0)
下载附件
2022-3-10 14:02 上传

分析该方法,输入的第二组"Standard Reg Code"值需满足以下条件
长度=15 (0 1 2 3 4)字符必须是数字 (3 4)组成的十进制数必须是质数 (5 6)不是特殊字符,字母即可 (7 8 9)都为数字 9必须是2的整数倍 (10 11 12)是字母即可
(13 14)必须是数字,并且13需小于14 (0 14)组成的十进制必须是质数。根据规则,构造相应注册码98717AB178AAA47,保存文件重新运行


14.png (7.6 KB, 下载次数: 0)
下载附件
2022-3-10 14:15 上传

判断是否为质数


15.png (5.55 KB, 下载次数: 0)
下载附件
2022-3-10 14:16 上传

中间字符判断


16.png (11.59 KB, 下载次数: 0)
下载附件
2022-3-10 14:21 上传

_g52 g53 g54分别从文件获取键值(Ticks at Reg Code Entry,Extension Ticks,Promotional Subscription),参考上方构造3组值,前两组是long型数据,第三个是bool,通过后面逻辑分析可知
第一组值是注册时间,第二个是可用时间,第三个是是否订阅标志,时间类型是DateTime.Now.Ticks,用C#调用编写代码获取一组值637765920010000000,31241376010000000


17.png (6.53 KB, 下载次数: 0)
下载附件
2022-3-10 14:28 上传

最终构造5组数据,完成软件注册,效果如下图


18.png (12.59 KB, 下载次数: 0)
下载附件
2022-3-10 15:01 上传

其他语言转换工具判断逻辑一样。
4、附录
附上官方网址https://www.tangiblesoftwaresolutions.com

下载次数, 下载附件

DrCatcher   

我都是重新写,我喜欢反复造轮子,哈哈
Light紫星   


落红护花 发表于 2022-3-10 20:25
不错,话说C#转C++咋转啊,C#窗体转VC++?

貌似只是语法层面的转换,不一定能运行,要自己改一些地方
cuxuan   

不错,很棒棒
win8fan   

用dnspy反编译.net,学习了
hubohang   

可以的 这样节约了很多方便
xixicoco   

不错这个系列软件
fgdzypf   

学习了。。。
pizazzboy   

楼主厉害,我对NET软件摸不着边。
落红护花   

不错,话说C#转C++咋转啊,C#窗体转VC++?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部