رشته اصلي كد نشده اينه :
cc6.cc5.cp1.cp3.cc1.cp2
كه بعد از كد شدن تبديل ميشه به اين :
+t0354Z6/+4jDzHYiq6CwwLT1SFOvnd0PEN4LpLdXn0=
كه در واقع همون كد فعال سازي هست
cc6,cp3,.... اسم بعضي از متدهاي تعريق شده در كلاس Library هست و برنامه بعد از گرفتن كد فعال سازي از كاربر اون رو
از حالت كد خارج ميكنه و اگه درست ديكد بشه تبديل ميشه به رشته اصلي كه اسم متدهايي كه بايد اجرا شن به ترتيب توش هست و برنامه تو يك حلقه هر جا اسم متدي از كلاس فوق رو پيدا كرد اون متد رو اجرا ميكنه
پس اگه متدها به ترتيب رشته اصلي اجرا شن با داشتن سورس برنامه خيلي راحت ميشه فهميد كه با اجرا شدن متدهاي ccx اين رشته به وجود مياد :
qwertyuiopasdfgh!jklzxcvbnm!
وبا اجرا شدن متدهاي سري cpx اين رشته توليد ميشه :
done!
كه همين رشته به عنوان جواب به كاربر نمايش داده مشه
سورس قسمتهايي از برنامه :
public void cc6()
{
this.code = "opasdfgh!" + this.code;
}
public void cc5()
{
this.code = "qwertyui" + this.code;
}
public void cp1()
{
this.pass = this.pass + this.code[8].ToString();
this.pass = this.pass + this.code[12].ToString();
}
public void cp3()
{
string str = "";
foreach (char ch in this.pass)
{
str = ch.ToString() + str;
}
this.pass = str;
}
public void cc1()
{
this.code = this.code + "jklzxcvbnm!";
}
public void cp2()
{
this.pass = this.pass + this.code[0x19].ToString();
this.pass = this.pass + this.code[2].ToString();
this.pass = this.pass + this.code[0x10].ToString();
}
public void a()
{
int num = 0;
string str2 = "";
KeyManager manager = new KeyManager();
Library library = new Library();
MethodInfo[] methods = typeof(Library).GetMethods();
foreach (string str3 in manager.Name.Split(new char[] { '.' }))
{
foreach (MethodInfo info in methods)
{
if (info.Name == str3)
{
info.Invoke(library, null);
}
num++;
str2 = str3;
}
}
this.b = library.Pass;
}
واما در مورد پكري كه استفاده كردي...امنيتش نمره صفر ميگيره گرچه براي جلوگيري از تازه كارها بسيار مناسبه
اين روش ميتونه امنيت نسبتا خوبي حتي چندين برابر پروتكشنهاي تجاري ايجاد كنه ولي همونطور كه تو تاپيكهاي مشابه گفتم كركر با داشتن يك كد فعال سازي متونه براي هميشه دخلش رو بياره
برنامه آنپك شده و كرك شده رو ضميمه كردم كه با اين كد فعال ميشه كه در واقع همون رشته اصلي هست :
cc6.cc5.cp1.cp3.cc1.cp2
حالا فرض كن يك برنامه با همين روش توليد كردي و به تعداد زياد در بازار پخش كردي وبا داشتن مشخصات سيستم مشتري كد فعال سازي توليد ميكني ، فقط كافيه كه من برنامه كرك شده با كد بالا رو منتشر كنم تا برنامه روي همه سيستمها با مشخصات مختلف اجرا بشه و اين يعني نابودي درآمد فروش برنامه
از اين روش نه چندان جديد در برنامه هاي غير دات نت هم استفاده ميشده با اين تفاوت كه اونجا ما با آدرس توابع يا متدها تو حافظه برنامه كار ميكنيم نه با اسمشون
فكر ميكنم اگه سورس كامل برنامت رو بذاري كمك خيلي زيادي به دوستان دات نت كارت در يادگيري يك روش امنيتي خوب ميكني