SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

درخواست کرک برنامه

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • درخواست کرک برنامه

    سلام
    یه برنامه دارم که با c# نوشته شده و کرک براش نیومده چون برای یه شرکت خاص نوشته شده
    برنامه نویس و کسی که اون رو تولید کرده طبق آخرین آماری که دارم الان خارج از کشور هست و هیچ دسترسی به ایشون نیست
    برنامه به شبکه داخلی متصل میشه و سریال سخت افزاری هارد و نوع درایور کارت شبکه رو چک میکنه اگر درست بود برنامه وارد شبکه میشه و اگر درست نبود ارور خاصی نمیده ، با ویژوال استودیو نوشته شده و سورس برنامه ورژن قبلی اون موجود هست منتها در ورژن قبلی وابستگی به سخت افزار وجود نداشت
    درضمن این رو هم میدونم که برنامه فایل 1 کیلوبایتی که قفل هست و آدرس اون رو هم میدونم رو چک میکنه که یک خط نوشته داخل اون فایل کد نگاری شده هست
    با نرم افزار های آنپکر حدودی به الگوریتم و سورس برنامه رسیدم ولی بازهم نمیدونم چکاری انجام بدم
    اگر کسی هست که راهنمایی کنه ممنون میشم
    اگر کسی هست که بصورت پروژه ای انجام میده لطفا بصورت خصوصی پیام بزاره
    ممنون

  • #2
    دو تا برنامه قدرتمند برای این کار هست

    dnSpy
    .NET debugger and assembly editor. Contribute to dnSpy/dnSpy development by creating an account on GitHub.


    و

    Reflector
    See how APIs, libraries, frameworks, and 3rd party .NET code really work with the leading .NET decompiler - .NET Reflector. Runs as a Visual Studio add-in.


    راحت میتونید ببینید که الگوریتم فایل قفل برنامه چطوریه!

    نظر


    • #3
      نوشته اصلی توسط SH0CK نمایش پست ها
      دو تا برنامه قدرتمند برای این کار هست

      dnSpy
      .NET debugger and assembly editor. Contribute to dnSpy/dnSpy development by creating an account on GitHub.


      و

      Reflector
      https://www.red-gate.com/products/do...ent/reflector/

      راحت میتونید ببینید که الگوریتم فایل قفل برنامه چطوریه!
      برنامه رو قفل کردن که به اون قسمت اصلی الگوریتم آنپک نمیشه ، یه فایل کد ساز خود برنامه نویس به من داد اون آنپک میشه ولی کار نمیکنه، این برنامه کم حجم باید یه فایل بسازه بنام rfso.tmp که کد برنامه بر اساس سریال هارد داخل اون هست ولی نمیدونم چی شده که دیگه کار نمیکنه، همون موقع هم برنامه نویس میگفت حتما باید ویژوال استودیو نصب باشه

      فایل کد ساز
      https://s16.picofile.com/file/8419616692/OM_Train.zip.html


      با نرم افزار jetbrain dotpeek آنپک کردم به یه فرم 1 رسیدم و یه الگوریتم که بازهم نمیدونم چیکار میکنه

      کد:
      // Decompiled with JetBrains decompiler
      // Type: OmegaLicenseGenerator.Form1
      // Assembly: OmegaLicenseGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
      // MVID: 7797B13D-1E0E-442E-962D-AD44EB51D5BF
      // Assembly location: C:\Users\abbasali\Desktop\OM-Train\OmegaLicenseGenerator.exe
      
      using System;
      using System.ComponentModel;
      using System.Drawing;
      using System.IO;
      using System.Runtime.InteropServices;
      using System.Security.Cryptography;
      using System.Text;
      using System.Windows.Forms;
      
      namespace OmegaLicenseGenerator
      {
      public class Form1 : Form
      {
      internal static byte[] byte_0;
      internal static byte[] byte_1;
      private int int_1 = 5002;
      private int int_2 = 5001;
      private int int_3 = 7002;
      private int int_4 = 7001;
      private int int_5 = 6002;
      private int int_6 = 6001;
      private int int_7 = 6187;
      private int int_8 = 6287;
      private int int_9 = 6188;
      private int int_10 = 6553;
      private IContainer components;
      private Button btnGenerate;
      private TextBox txtSerial;
      private Label label1;
      
      public Form1() => this.InitializeComponent();
      
      private void btnGenerate_Click(object sender, EventArgs e) => this.GenPass();
      
      private void GenPass()
      {
      Form1.Setvar("", 1024, 768);
      string str = Environment.GetFolderPath(Environment.SpecialFolde r.DesktopDirectory) + "\\rfso.tmp";
      Form1.CalculateStatistics(0);
      this.txtSerial.Text = Marshal.PtrToStringAnsi(Form1.GetStr());
      }
      
      private static byte[] smethod_629(byte[] lic, string key)
      {
      Form1.smethod_00(key);
      byte[] byte0 = Form1.byte_0;
      return Form1.smethod_300(Form1.byte_1, lic, byte0);
      }
      
      private static void smethod_00(string A_1)
      {
      int length = A_1.Length;
      Form1.smethod_465(A_1.Substring(A_1.Length - 13, 12));
      }
      
      private static unsafe void smethod_465(string string_0)
      {
      // ISSUE: untyped stack allocation
      void* voidPtr1 = (void*) __untypedstackalloc(new IntPtr(5));
      byte[] numArray = (byte[]) null;
      int length = 24;
      while (length != 0)
      {
      Form1.byte_0 = new byte[length];
      length = 16;
      if (length != 0)
      {
      Form1.byte_1 = new byte[length];
      numArray = new SHA384Managed().ComputeHash(Encoding.ASCII.GetByte s(string_0));
      *(int*) voidPtr1 = 0;
      goto label_4;
      }
      }
      goto label_5;
      label_4:
      *(sbyte*) ((IntPtr) voidPtr1 + 4) = *(int*) voidPtr1 < 24 ? (sbyte) 1 : (sbyte) 0;
      length = (int) *(byte*) ((IntPtr) voidPtr1 + 4);
      label_5:
      if (length != 0)
      {
      Form1.byte_0[*(int*) voidPtr1] = numArray[*(int*) voidPtr1];
      void* voidPtr2 = voidPtr1;
      int num = *(int*) voidPtr2 + 1;
      *(int*) voidPtr2 = num;
      goto label_4;
      }
      else
      {
      *(int*) voidPtr1 = 24;
      while (true)
      {
      *(sbyte*) ((IntPtr) voidPtr1 + 4) = *(int*) voidPtr1 < 40 ? (sbyte) 1 : (sbyte) 0;
      if (*(byte*) ((IntPtr) voidPtr1 + 4) != (byte) 0)
      {
      Form1.byte_1[*(int*) voidPtr1 - 24] = numArray[*(int*) voidPtr1];
      void* voidPtr2 = voidPtr1;
      int num = *(int*) voidPtr2 + 1;
      *(int*) voidPtr2 = num;
      }
      else
      break;
      }
      }
      }
      
      private static byte[] smethod_300(byte[] byte_0, byte[] lic, byte[] byte_2)
      {
      CryptoStream cryptoStream = (CryptoStream) null;
      RijndaelManaged rijndaelManaged = (RijndaelManaged) null;
      ICryptoTransform transform = (ICryptoTransform) null;
      MemoryStream memoryStream = (MemoryStream) null;
      try
      {
      rijndaelManaged = new RijndaelManaged();
      rijndaelManaged.Key = byte_2;
      rijndaelManaged.IV = byte_0;
      transform = rijndaelManaged.CreateDecryptor();
      memoryStream = new MemoryStream();
      cryptoStream = new CryptoStream((Stream) memoryStream, transform, CryptoStreamMode.Write);
      cryptoStream.Write(lic, 0, lic.Length);
      cryptoStream.FlushFinalBlock();
      return memoryStream.ToArray();
      }
      catch (CryptographicException ex)
      {
      throw new CryptographicException("Password is invalid. Please verify once again.");
      }
      finally
      {
      if ((rijndaelManaged == null ? 1 : 0) == 0)
      goto label_6;
      label_4:
      transform?.Dispose();
      cryptoStream?.Close();
      if (memoryStream != null && 0U <= 0U)
      memoryStream.Close();
      label_6:
      rijndaelManaged.Clear();
      goto label_4;
      }
      }
      
      [DllImport("UtilityDll.dll", CallingConvention = CallingConvention.Cdecl)]
      private static extern int CalculateStatistics(int int_0);
      
      [DllImport("UtilityDll.dll", CallingConvention = CallingConvention.Cdecl)]
      private static extern IntPtr GetStr();
      
      [DllImport("UtilityDll.dll", CallingConvention = CallingConvention.Cdecl)]
      private static extern void Setvar(string string_0, int int_0, int int_1);
      
      protected override void Dispose(bool disposing)
      {
      if (disposing && this.components != null)
      this.components.Dispose();
      base.Dispose(disposing);
      }
      
      private void InitializeComponent()
      {
      this.btnGenerate = new Button();
      this.txtSerial = new TextBox();
      this.label1 = new Label();
      this.SuspendLayout();
      this.btnGenerate.Location = new Point(375, 33);
      this.btnGenerate.Name = "btnGenerate";
      this.btnGenerate.Size = new Size(75, 23);
      this.btnGenerate.TabIndex = 0;
      this.btnGenerate.Text = "Generate";
      this.btnGenerate.UseVisualStyleBackColor = true;
      this.btnGenerate.Click += new EventHandler(this.btnGenerate_Click);
      this.txtSerial.Location = new Point(102, 35);
      this.txtSerial.Name = "txtSerial";
      this.txtSerial.Size = new Size(267, 20);
      this.txtSerial.TabIndex = 1;
      this.label1.AutoSize = true;
      this.label1.Location = new Point(57, 38);
      this.label1.Name = "label1";
      this.label1.Size = new Size(39, 13);
      this.label1.TabIndex = 2;
      this.label1.Text = "Serial :";
      this.AutoScaleDimensions = new SizeF(6f, 13f);
      this.AutoScaleMode = AutoScaleMode.Font;
      this.ClientSize = new Size(519, 99);
      this.Controls.Add((Control) this.label1);
      this.Controls.Add((Control) this.txtSerial);
      this.Controls.Add((Control) this.btnGenerate);
      this.Name = nameof (Form1);
      this.Text = " Omega License Generator";
      this.ResumeLayout(false);
      this.PerformLayout();
      }
      }
      }
      ویرایش توسط abbasalifix : https://www.iranhack.com/forum/member/494-abbasalifix در ساعت 12-31-2020, 10:29 PM

      نظر

      صبر کنید ..
      X