终南明月 发表于 2024-7-25 09:59

.Net程序的第一次尝试,不完全破解版。

      本人不是学计算机的,以前觉得.Net程序觉得很神秘,无从下手,最近看到论坛有几篇.Net程序的破解教程( 某微信通讯录工具的简单修改、某排8X软件),深受启发,在此谢谢zybn的热心回复,正好手头有一个PDF分割软件,30天试用期,用Exeinfo PE 测了一下,是.Net程序,按照教程用Dnspy加载,乱七八糟,看不懂,估计有混淆,祭出 .Net Reactor Slayer v6.4.0 ,反混淆,再次打开,瞬间清爽很多,奇怪的是我用搜索查找注册码,无法找到任何信息,凭着代码命名,找到到一些关键点,奈何小白基础差,算法部分看不懂,就简单粗暴的,直接暴力破解。判断部分unregister都改为register,


另外购买按钮部分代码清除,这样就不会跳转网站了。最后保存修改,运行


30次后可以正常使用,但有2点遗憾,一是每次运行这个注册窗口会弹出,二是分割的文件有试用版水印,希望向各位大佬学习。

SnowRen 发表于 2024-7-25 16:17

准备一对RSA,首先替换程序内的公匙,也就是this.string_0
PublicKey(XML):
<RSAKeyValue><Modulus>xLulVas14drnvenld8E8CZXIgojMxFvEHdvyITwCT/gP+L4J4iymyi2L0HCeOdCVf8QNUzOAGtpD5/8wxnQuxcYsg1TbfvJGHimttjN52NvRKSbbMb9mgP7XbKQpAVh78pZiCaLh5B7X0GXzSp5PtuBtpSPf3c0B9R/g8hyIWrk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

PrivateKey(XML):
<RSAKeyValue><Modulus>xLulVas14drnvenld8E8CZXIgojMxFvEHdvyITwCT/gP+L4J4iymyi2L0HCeOdCVf8QNUzOAGtpD5/8wxnQuxcYsg1TbfvJGHimttjN52NvRKSbbMb9mgP7XbKQpAVh78pZiCaLh5B7X0GXzSp5PtuBtpSPf3c0B9R/g8hyIWrk=</Modulus><Exponent>AQAB</Exponent><P>3Tj7RaCF0xsEMqNnOz5grapHggiLs5+YO+DiSsYGRWQCTDSj48VWC+4WDasbMj4dqbGsDK4iKy1qehvt0PABpw==</P><Q>46kXClXBjO8NaMsK2M43ZMCD+r66bBnCYPdT6t2RE9RcpUz+2tW9VQPy6Y2OQAY6pYSJG2vsfICTly8wZvCMnw==</Q><DP>dkuzKg9loHaQ7xcr66U2g4dLx8AUHFBaUqK1v3BXCCIrjF6VyQXMNoLxLgvydhJ7QDPvIbS4NsiJaJSovhKpfw==</DP><DQ>d/94lYn+KzsV5lafsQeBSynuZwyBVtl9C39STEndXoZhDwA2lUJ0OYuLTm++uyCNaREi88E/NaDQKrBE4v2IIQ==</DQ><InverseQ>NVp4ze3XaxOijt0wlf7DBSU18HAXiacyHp7Sy70KutNsWAJ2kwj62MnxO/iGrbBPs5kQ/f77E05rGx95nLkEug==</InverseQ><D>DvYWRMWYe2yiYxb+lHTlk/UIIqU0rVotN/gaGdzucBZ1YH1TUxgCNy3vjBKEdfEe7XCDcuhfvasLrwEBPJZpWA7u8llk9Szx1CKdPRkGvf6TAlyE1051ZI3fUsxk6QK4qOnJBwolOIq4hsos90TaOH7isGl9SZuVHxzE2DBzcmE=</D></RSAKeyValue>

注册机源码:

using System;
using System.Text;
using System.Security.Cryptography;

namespace SplitPDF_KeyGen
{
      class Program
      {
                static void Main(string[] args)
                {
                        Console.WriteLine("请输入机器码,回车确认\n\n机器码:");
                        string strHardwareID = Console.ReadLine();
                        if (!string.IsNullOrWhiteSpace(strHardwareID))
                        {
                              string privateKey = "<RSAKeyValue><Modulus>xLulVas14drnvenld8E8CZXIgojMxFvEHdvyITwCT/gP+L4J4iymyi2L0HCeOdCVf8QNUzOAGtpD5/8wxnQuxcYsg1TbfvJGHimttjN52NvRKSbbMb9mgP7XbKQpAVh78pZiCaLh5B7X0GXzSp5PtuBtpSPf3c0B9R/g8hyIWrk=</Modulus><Exponent>AQAB</Exponent><P>3Tj7RaCF0xsEMqNnOz5grapHggiLs5+YO+DiSsYGRWQCTDSj48VWC+4WDasbMj4dqbGsDK4iKy1qehvt0PABpw==</P><Q>46kXClXBjO8NaMsK2M43ZMCD+r66bBnCYPdT6t2RE9RcpUz+2tW9VQPy6Y2OQAY6pYSJG2vsfICTly8wZvCMnw==</Q><DP>dkuzKg9loHaQ7xcr66U2g4dLx8AUHFBaUqK1v3BXCCIrjF6VyQXMNoLxLgvydhJ7QDPvIbS4NsiJaJSovhKpfw==</DP><DQ>d/94lYn+KzsV5lafsQeBSynuZwyBVtl9C39STEndXoZhDwA2lUJ0OYuLTm++uyCNaREi88E/NaDQKrBE4v2IIQ==</DQ><InverseQ>NVp4ze3XaxOijt0wlf7DBSU18HAXiacyHp7Sy70KutNsWAJ2kwj62MnxO/iGrbBPs5kQ/f77E05rGx95nLkEug==</InverseQ><D>DvYWRMWYe2yiYxb+lHTlk/UIIqU0rVotN/gaGdzucBZ1YH1TUxgCNy3vjBKEdfEe7XCDcuhfvasLrwEBPJZpWA7u8llk9Szx1CKdPRkGvf6TAlyE1051ZI3fUsxk6QK4qOnJBwolOIq4hsos90TaOH7isGl9SZuVHxzE2DBzcmE=</D></RSAKeyValue>";
                              strHardwareID = strHardwareID.Trim();
                              string text;
                              if (strHardwareID.IndexOf("_") <= 0)
                              {
                                        text = strHardwareID;
                              }
                              else
                              {
                                        string text2 = strHardwareID;
                                        text = text2.Substring(text2.IndexOf("_") + 1);
                              }
                              strHardwareID = text;
                              string[] array = strHardwareID.Split(new char[] { '|' });
                              string text3 = null;
                              foreach (string text4 in array)
                              {
                                        using (RSACryptoServiceProvider rsacryptoServiceProvider = new RSACryptoServiceProvider())
                                        {
                                                rsacryptoServiceProvider.FromXmlString(privateKey);
                                                RSAPKCS1SignatureFormatter rsapkcs1SignatureFormatter = new RSAPKCS1SignatureFormatter(rsacryptoServiceProvider);
                                                rsapkcs1SignatureFormatter.SetHashAlgorithm("SHA1");
                                                byte[] bytes = Encoding.ASCII.GetBytes("Do_SplitPDF" + text4);
                                                byte[] array3 = new SHA1Managed().ComputeHash(bytes);
                                                text3 = text3 + Convert.ToBase64String(rsapkcs1SignatureFormatter.CreateSignature(array3)) + Environment.NewLine + Environment.NewLine;
                                        }
                              }
                              Console.WriteLine("\n下面三组注册码,使用任意一组即可\n");
                              Console.WriteLine(text3);
                        }
                        Console.Write("按任意键退出...");
                        Console.ReadKey(true);

                }
      }
}


uilte 发表于 2024-7-25 12:05

源码都有了,注册算法可以闹出来了

gksj 发表于 2024-7-25 14:57

1.返回注册状态:
可以把这个方法里面的内容全部删除,改成
return RegType.Registered;

2.屏蔽服务器收集用户注册数据:
然后在RegOnlineBLL的类中的m_PostSubmit方法,把代码全部删除,改成
return "52pojie";

返回空字符串也可以

ruilidejian 发表于 2024-7-25 11:26

膜拜大牛,学习中

hheehhaa 发表于 2024-7-25 11:29

继续努力,加油!

uzcool 发表于 2024-7-25 11:41

本帖最后由 uzcool 于 2024-7-25 11:49 编辑

PDFdo?你截图代码里都有RSA公钥了..建议是.自己生成一组公钥私钥..然后按照注册流程走一遍 就行了..

算法看不懂可以问AI ..比较简单..

Hcandy 发表于 2024-7-25 11:59

算注册码才是王道,这种爆破肯定是有BUG

Anonyoung 发表于 2024-7-25 12:13

之前接触dotnet还是为了解包gal

终南明月 发表于 2024-7-25 12:26

uzcool 发表于 2024-7-25 11:41
PDFdo?你截图代码里都有RSA公钥了..建议是.自己生成一组公钥私钥..然后按照注册流程走一遍 就行了..

算 ...

压根没这基础,不懂RSA加密算法。

liuenzhuo 发表于 2024-7-25 13:49

想知道看到RSA公钥后,怎么做注册机

xserver 发表于 2024-7-25 14:08

加油,向楼主学习
页: [1] 2 3 4 5 6 7
查看完整版本: .Net程序的第一次尝试,不完全破解版。