3ds max插件《octopus》 第一话:插件骚功能演示 https://www.bilibili.com/video/av48411342









if(PE.isNETStringPresent("ConfusedByAttribute")) { var sConfuserVersion=getConfuserVersion(); if(sConfuserVersion!="") { sVersion=sConfuserVersion; } else { sVersion="1.X"; } bDetected=1; }
只是单纯的判断了下是否有 "ConfusedByAttribute",回到 dnspy 中看了一眼,确实是有这个方法。



internal static void ActivateLicense(string email, string key, string productName, string proxyString) { if(!RapidToolsLicensing.LocalCheck(productName)) { WebRequest webRequest = WebRequest.Create(RapidToolsLicensing.licServer); webRequest.Method = "POST"; string s = string.Format("wc-api=software-api&request=activation&email={0}&license_key={1}&product_id={2}", email, key, productName); byte[] bytes = Encoding.UTF8.GetBytes(s); webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = (long) bytes.Length; if(!string.IsNullOrEmpty(proxyString)) { webRequest.Proxy = new WebProxy(proxyString); } Stream stream = null; try { stream = webRequest.GetRequestStream(); stream.Write(bytes, 0, bytes.Length); stream.Close(); } catch { if(MessageBox.Show("这个框太长,我屏蔽了", "Error reaching the license server", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { Process.Start("敏感网址,我屏蔽了"); } } if(stream != null) { WebResponse response = webRequest.GetResponse(); stream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(stream); string input = streamReader.ReadToEnd(); LicenseData licenseData = new JavaScriptSerializer().Deserialize < LicenseData > (input); licenseData.key = key; licenseData.product = productName; string text = new JavaScriptSerializer().Serialize(licenseData); MessageBox.Show(text); if(licenseData.code == null && licenseData.error == null && licenseData.activated) { string user = GetInfo.GetUSER(); string s2 = StringCipher.Encrypt(text, user); if(!Directory.Exists(Dir.LicenseDir)) { Directory.CreateDirectory(Dir.LicenseDir); } FileStream fileStream = File.Create(Dir.LicenseDir + productName + ".lic"); byte[] bytes2 = Encoding.ASCII.GetBytes(s2); fileStream.Write(bytes2, 0, bytes2.Length); fileStream.Close(); } streamReader.Close(); stream.Close(); response.Close(); } } }



{ "error":"Invalid Request", "code":"100", "activated":false, "timestamp":1585576146, "sig":"58a0cd5d909332214feac40d3f5551e7" }
if(licenseData.code == null && licenseData.error == null && licenseData.activated) { string user = GetInfo.GetUSER(); string s2 = StringCipher.Encrypt(text, user); if(!Directory.Exists(Dir.LicenseDir)) { Directory.CreateDirectory(Dir.LicenseDir); } FileStream fileStream = File.Create(Dir.LicenseDir + productName + ".lic"); byte[] bytes2 = Encoding.ASCII.GetBytes(s2); fileStream.Write(bytes2, 0, bytes2.Length); fileStream.Close(); }








相关文章
暂无评论...