جميل الشرح اشكرك عليه..شاهدت نصفه فقط لضيق الوقت وساكمله لاحقا واذا وجد اى استفسار فساطرحه لاحقا
 
فى الجزء الاول من السيريل عند برمجة مول المفاتيح لماذا اضفت h الى القيمة 26 المخصصة ل EDX
السؤال الثانى هل يمكنك ان توضح رياضيا كيف تعمل هذه الدالة
movsx edx,byte ptr ds:[NameBuff]
add edx, 26h
بما ان الاسم المدخل هو سبعة احرف
فقد قمت بتجريب 1+26+2+26+3+26 الخ ولكن لم يعطينى الناتيج الصحيح
ايضا جربت
1*26+2*16+3*26 الخ وايضا لم يكن الناتج صحيحا
هل يمكنك توضيح رياضيا كيف تقوم هذه الدالة بالحساب
ايضا ان امكن هل يمكنك توضيح الاكواد السابقة ولكن بلغة C# او VB.net
 
 
 (03-06-2019, 10:43 PM)pharaon كتب : [ -> ]فى الجزء الاول من السيريل عند برمجة مول المفاتيح لماذا اضفت h الى القيمة 26 المخصصة ل EDX
h يعني القيمة نوعها 
hexadecimal...
 
 (03-06-2019, 10:43 PM)pharaon كتب : [ -> ]السؤال الثانى هل يمكنك ان توضح رياضيا كيف تعمل هذه الدالة
 
movsx edx, byte نأخد بايت من الاسم و نحفظه في المسجل 
edx
نقوم بجمع محتوى 
edx مع قيمة 
26h و نحفظ الناتج في نفس المسجل 
edx
 
 (03-06-2019, 10:43 PM)pharaon كتب : [ -> ]  ما ان الاسم المدخل هو سبعة احرف
فقد قمت بتجريب 1+26+2+26+3+26 الخ ولكن لم يعطينى الناتيج الصحيح
ايضا جربت
1*26+2*16+3*26 الخ وايضا لم يكن الناتج صحيحا
الاشكال انك تحاول جمع قيمتين من نوعين 
مختلفين، 
1 من نوع 
decimal و 
26 من نوع 
hexadecimal 
من المفروض ان تكون العملية بهذا الشكل 
31h+
26h بمعنى 
31 هي فيمة الهكس لــ 
1
مثال:
لو ادخلنا قيمة 
1 كاسم المستخدم في الكيجن
1
d = 31
h
31
h+26
h = 57
h
57
h=87
d
يرجع لنا الكيجن قيمة 87 و هي قيمة من نوع decimal
![[صورة مرفقة: attachment.php?aid=641]](https://www.at4re.net/f/attachment.php?aid=641) 
![[صورة مرفقة: attachment.php?aid=642]](https://www.at4re.net/f/attachment.php?aid=642) 
![[صورة مرفقة: attachment.php?aid=643]](https://www.at4re.net/f/attachment.php?aid=643) 
![[صورة مرفقة: attachment.php?aid=644]](https://www.at4re.net/f/attachment.php?aid=644) 
كود الكيجن بالسي شارب:
using System;
namespace Keygen {
public class Program {
    public static void Main() {
        Console.Title = "Keygen";
        Console.Write("Username: ");
        string Username = Console.ReadLine();
        int part01 = 0;
        int part02 = 0;
        int part03 = 0;
        int part04 = 0;
        for (int i = 0; i < Username.Length; i++) {
            part01 = part01 + Username[i] + 0x26;
            part02 = part02 + Username[i] * 0x34;
            part03 = part03 + Username[i] + 0x0C;
            part04 = part04 + Username[i] * 0x0E;
        }
        Console.Write("Serial  : "+ part01 + "-" + part02 + "-" + part03 + "-" + part04);
        Console.ReadLine();
    }
}
}
 
السورس مع الملفات التنفيذية مرفقة:
[
attachment=645]
 
شكرا على الشرح اخى
المشكلة هى اننى عندما استخدمت الحاسبة لاحسب قيم الارقام بالنظام hexadecimal
كنت النتيجة هى نفسها
![[صورة مرفقة: 1.jpg]](https://i.ibb.co/Qrzm9zY/1.jpg) 
بخصوص كود سى شارب
 
part01 = part01 + Username[i] + 0x26;
البرنامج سيجمع رقم Decimal الى قيمة hexadecimal ؟
 
 (04-06-2019, 01:21 PM)pharaon كتب : [ -> ]المشكلة هى اننى عندما استخدمت الحاسبة لاحسب قيم الارقام بالنظام hexadecimal
لا تستعمل الحاسية بل استعمل ادوات اخرى تدعم جدول الــ 
ASCII مثل 
keygener assistant في تبويب 
conversion - 
format لان القيم المدخلة يتعامل معها الكيجن انطلاقا من منطق جدول 
ASCII
جدول الــ 
ASCII مهم جدا في مجال توليد المفاتيح...
 (04-06-2019, 01:21 PM)pharaon كتب : [ -> ]البرنامج سيجمع رقم Decimal الى قيمة hexadecimal ؟
برمجيا يمكنك كتابة القيم الثابتة اما هكس او ديسي:
part01 = part01 + Username + 
0x26 
او
part01 = part01 + Username + 
38
part01 = part01 + Username + 
38
part02 = part02 + Username * 
52
part03 = part03 + Username + 
12
part04 = part04 + Username * 
14