16-12-2024, 11:05 PM (آخر تعديل لهذه المشاركة : 16-12-2024, 11:08 PM بواسطة elswah79.)
ترجمه الكود الي فيجوال بيسك دوت نت
' إنشاء الواجهة
' زر الأوامر => Command1
' مربع النص => txtKey
' مربع النص => txtName
Private Sub Command1_Click(sender As Object, e As EventArgs) Handles Command1.Click
Dim c, i, j, szCNLen As Integer
Dim a(6) As Integer
Dim MgcNum(21) As Integer
Dim ssName(50) As Integer
Dim szName As String
' تعيين القيم الأولية للمصفوفات
a(0) = 0
a(1) = 0
a(2) = 0
a(3) = 99
a(4) = 99
a(5) = 0
MgcNum(0) = 38 : MgcNum(1) = 56
MgcNum(2) = 57 : MgcNum(3) = 57
MgcNum(4) = 99 : MgcNum(5) = 15
MgcNum(6) = 58 : MgcNum(7) = 12
MgcNum(8) = 13 : MgcNum(9) = 17
MgcNum(10) = 19 : MgcNum(11) = 18
MgcNum(12) = 88 : MgcNum(13) = 58
MgcNum(14) = 52 : MgcNum(15) = 52
MgcNum(16) = 12 : MgcNum(17) = 13
MgcNum(18) = 12 : MgcNum(19) = 57
MgcNum(20) = 52 : MgcNum(21) = 98
' تنظيف وتعديل اسم المستخدم
szName = UCase(Trim(txtName.Text))
szCNLen = szName.Length - 1
i = 0
j = 0
' الحلقة الأولى لمعالجة الاسم
Do While i <= szCNLen
For c = 1 To szName.Length
ssName(i) = Asc(Mid(szName, c, 1))
If j > 2 Then j = 0
a(j) = (ssName(i) * szName.Length + a(j)) Mod &H64
If a(j) >= &H64 Then a(j) = a(j) Mod &H64
i = i + 1
j = j + 1
Next
Loop
i = 0
' الحلقة الثانية
Do While i < 5
a(5) = ((a(5) + a(i) * szName.Length)) Mod &H16
i = i + 1
Loop
' تحديث مفتاح التفعيل بناءً على الحسابات السابقة
a(5) = MgcNum(CInt(a(5)))
' التحقق من طول الاسم المدخل
If Trim(txtName.Text).Length < 3 Then
txtkey.Text = "Name must be more than 03 Chars"
Else
txtkey.Text = a(3) & a(5) & a(4) & a(0) & a(1) & a(2)
End If
End Sub
c#
// إنشاء الواجهة
// زر الأوامر => Command1
// مربع النص => txtKey
// مربع النص => txtName
private void Command1_Click(object sender, EventArgs e)
{
int c, i, j, szCNLen;
int[] a = new int[6];
int[] MgcNum = new int[22];
int[] ssName = new int[50];
string szName;
// تعيين القيم الأولية للمصفوفات
a[0] = 0;
a[1] = 0;
a[2] = 0;
a[3] = 99;
a[4] = 99;
a[5] = 0;
MgcNum[0] = 38; MgcNum[1] = 56;
MgcNum[2] = 57; MgcNum[3] = 57;
MgcNum[4] = 99; MgcNum[5] = 15;
MgcNum[6] = 58; MgcNum[7] = 12;
MgcNum[8] = 13; MgcNum[9] = 17;
MgcNum[10] = 19; MgcNum[11] = 18;
MgcNum[12] = 88; MgcNum[13] = 58;
MgcNum[14] = 52; MgcNum[15] = 52;
MgcNum[16] = 12; MgcNum[17] = 13;
MgcNum[18] = 12; MgcNum[19] = 57;
MgcNum[20] = 52; MgcNum[21] = 98;
// تنظيف وتعديل اسم المستخدم
szName = txtName.Text.Trim().ToUpper();
szCNLen = szName.Length - 1;
i = 0;
j = 0;
// الحلقة الأولى لمعالجة الاسم
while (i <= szCNLen)
{
for (c = 1; c <= szName.Length; c++)
{
ssName[i] = (int)szName[c - 1]; // تحويل الحرف إلى قيمته ASCII
if (j > 2) j = 0;
a[j] = (ssName[i] * szName.Length + a[j]) % 0x64;
if (a[j] >= 0x64) a[j] = a[j] % 0x64;
i++;
j++;
}
}
i = 0;
// الحلقة الثانية
while (i < 5)
{
a[5] = ((a[5] + a[i] * szName.Length)) % 0x16;
i++;
}
// تحديث مفتاح التفعيل بناءً على الحسابات السابقة
a[5] = MgcNum[a[5]];
// التحقق من طول الاسم المدخل
if (txtName.Text.Trim().Length < 3)
{
txtKey.Text = "Name must be more than 03 Chars";
}
else
{
txtKey.Text = a[3] + a[5] + a[4] + a[0] + a[1] + a[2];
}
}
وضعت لها البرنامج تحدي سنة 2016 للاصدارة 10.5 أيام كنت نائب مدير منتدى AoRE
وقد شارك بالحلول الصحيحة كل من الإخوان الله يذكرهم بخير
1- Service Manual
2- المخفي 2000
3- Mov_Eax
لكن للاسف ضاعت حلول الشباب مني ولم أجد ألا حلي
سوف أضع حلي للفائدة و شرح فلاشي لمعوقات البرنامج
DarkDeath
==============================================
new ver 10.5.1
=====================
1- search by Unregister (First Unregister )
2- Go Up long JMP
3- Go 2 line down U found MOVSX EAX,WORD PTR DS:[59B274]
4- Put find References in all address
First STOP At
005820E3 66:3935 74B25>CMP WORD PTR DS:[59B274],SI
5- value 59B274 = 0 = Unreg
value 59B274 = 1 = Registration
مسجل لـ فقط بدون اسم رقم 1 و 2
هذا كسر للبرنامج وجميع المميزات تعمل لكن لا تستطيع أن تضع أسمك في خانة الترخيص
في الخطوة رقم 1 و 2
1 )))
005820E3 66:3935 74B25>CMP WORD PTR DS:[59B274],SI
To
005820E3 66:8305 74B25>ADD WORD PTR DS:[59B274],1
005820EB 90 NOP
005820EC 90 NOP
005820ED 90 NOP
005820EE 90 NOP
OR (fox jmp) هذه الخطوة إضافية حل بديل عن رقم 1 بالاعلى واستخدمت القفزة الثعلبية لاحراج المبرمج
00581EBF /0F85 D3010000 JNZ 00582098 ; SM_10_5.00582098
To
00581EBF /0F85 AA010000 JNZ 0058206F ; SM_10_5.0058206F
2 ))
004EDA22 . 85C0 TEST EAX,EAX
To
004EDA22 33C0 XOR EAX,EAX
=============== الخطوة 3 و 4 يقبل اي اسم وأي سيريال مكون من 12 رقم ===========
أستخدمت القفزات الثعلبية لتفادي كثير من التغييرات
3 ))fox jmp SN registration
004EBA40 /0F84 FE020000 JE 004EBD44 ; =>> Fox jmp To 004EBA79
To
004EBA40 /EB 37 JMP SHORT 004EBA79 ; =>> Fox jmp To 004EBA79
004EBA42 |90 NOP
004EBA43 |90 NOP
004EBA44 |90 NOP
004EBA45 |90 NOP
4)))
jmp delete registration info
fox jmp
00582037 . 66:3BDE CMP BX,SI
To
00582037 /EB 36 JMP SHORT 0058206F ; SM_10_5_.0058206F
00582039 |90 NOP
يجب أرجاع الاسم الى الاسم الاصلي بعد عملية الباتش
حتى لا تظهر رسالة البلاك لست -القاشمة السوداء - لك
لانه عندما يكون البرنامج في حالة الحماية النشطة بجانب الساعة وتطلب فتح البرنامج فسوف يعمل البرنامج الغير مكسور الاصلي