الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما رأيكم في هذا الـ keygen !؟

بدأه Snack3r في 17 نوفمبر 2010 · 26 رد · 2,951 مشاهدة · في منتدى تحليل التطبيقات البرمجية وحمايتها
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

طلب مني أحد الإخوة كتابة مشروع تعليمي. على بيئة الكونصول .. يكون بمثابة برنامج كبير يحتوي على العديد من التطبيقات المتعلقة بالفصول العشرة الأولى من اللغة ويكون البرنامج محمي بسيريال .. و يكون معاه كيجن خاص به .. كما طلب مني أن أشرح طريقة تصميم هذا النوع من المشاريع بأدق التفاصيل و ذلك بغرض إفادة المبتدئين و كل من يهمه الأمر :)

الآن و قد قاربت من الإنتهاء من المشروع (الذي يحتوي على أكثر من 730 سطر برمجي), هاأنا أطلب منكم النقد البناء ليخرج المشروع في أجمل حلة .. بمناسبة العيد :lol:

البرنامج الرئيسي في المرفقات باسم Mini Calc و معاه الكيجن تبعه, أريد منكم التعليق على صعوبة/مرونة كسر خوارزمية الكيجن و كيف تمكن العضو من معرفة الخوارزمية (مع أنها معقدة بعض الشيء ! :wink: )

ملاحظة : للأمانة .. قمت بحذف خيارات البرنامج الرئيسي إلى حين وضعه في موضوع خاص بالمنتدى و شرحه سطر بسطر .. لذلك عندما يكون السيريال صحيح لن ينتقل البرنامج إلى الجزء الخاص بعمل المشروع .. لأنني حذفته أصلا ! :)

================

تم تعديل المشاركة .. تم حذف الكيجن نظرا لظروف أمنية ! :P

تم تحميل البرنامج سابقا 30 مرة.

بانتظاركم يا مبرمجين

Mini Calc.rar

تم تعديل هذه المشاركة بواسطة أحمد المتألق في 17 نوفمبر 2010 في 21:22

#2

رائع.... مفيد لى شخصيا.... كل عام و انت بخير:)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#3

ليته كان بالانجليزية بدل الفرنسية happy.gif

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#4
اقتباس
رائع.... مفيد لى شخصيا.... كل عام و انت بخير :)

تسلم حبيبي :wub:

اقتباس
ليته كان بالانجليزية بدل الفرنسية :happy:

هذا لأن بيئتي فرنسية .. لذلك مُتأثر منها أكثر من الإنجليزية :)

أظنك من جماعة الأسمبلي :wink: , أين تعقيبك على كسر حماية الكيجن !؟

#5
capture2t.gif

#6
xpero كتب:

capture2t.gif

سأرفع ضدك دعوى قضائية في محكمة البرمجيات العليا :P

أرجو منك أن تشرح لي الطريقة التي اتبعتَها في كسر الحماية (راسلني على الخاص).

هذه صورة البرنامج قبل فقدان الوعي :lol: :

137df7c1f1.png

========

إذا كان بإمكانكم تصميم كيجن مضاد فهذا سيجعل الوطيس يحمى أكثر ...! :wink:

ملاحظة : كان من الخطأ إرفاق الكيجن مع البرنامج الرئيسي !, لأنه باتباع الكيجن يمكنك تصميم كيجن مساوي في مدة لا تتجاوز يومين !

تم حذف الكيجن من المرفقات :)

#7

أحمد المتألق

ليست هناك حاجة بالكيجن و لا لتصميم كيجن مضاد..

ما يلزم فقط هو تغيير امر jnz الى jz .. يمكن عمل ذلك بواسطة patch.

#8

هل ستحمي برنامجك بهذه الخوارزمية . ؟! انها مجرد رياضيات للاطفال

اعتذر على التعبير ...

مرفق .... الكيجن مع السورس(VB.NET2008)...


Public Class Form1
Dim const_str As String = "ABCDEYZ67FLMN012345X89OPQRSTUVWGHIJK"

Sub calcaulate_codes(ByVal User_Nmae As String)
Dim register_code As String = ""
k = -1
For i = 1 To Len(User_Nmae)
k = k + 1
gen_reg = Microsoft.VisualBasic.Mid(User_Nmae, i, 1)
gen_reg = Val(Asc(gen_reg))
index_xor = k Xor &H13
gen_reg = gen_reg Mod index_xor
register_code = register_code & Microsoft.VisualBasic.Mid(const_str, gen_reg + 1, 1)
Next i
Randomize()
For i = 1 To 16 - Len(User_Nmae)
randomvalue = CInt(Int((24) * Rnd() + 1))
register_code = register_code & Microsoft.VisualBasic.Mid(const_str, randomvalue, 1)
Next
txtresult.Text = Microsoft.VisualBasic.Mid(register_code, 1, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 5, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 9, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 13, 4)

End Sub
Private Sub txtusername_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtusername.TextChanged
calcaulate_codes(txtusername.Text)
End Sub
End Class

ArabTeam.rar

تم تعديل هذه المشاركة بواسطة Devd في 17 نوفمبر 2010 في 22:16

#9

هذا هو البرنامج بعد ما قمت بعمل باتش له. الان اصبح يقبل أي اسم و اي سريال !

Mini Calc_patched_by_xpero.zip

1
#10

يمكن عمل باتش وانهاء الموضوع كما ذكر الشباب ..

أعتقد أن الخوارزمية تعمل على 3 أحرف من الاسم مع مصفوفة من الأحرف الثابته .. لم استطع تخمينها -جاري العمل- ولكني قربت من كسر الخورزامية:

post-51148-079967400 1290022327_thumb.pn

كما ذكر أن هذا لا يسمى حماية على الاطلاق..

ملاحظة: ما علاقة الموضوع بقسم سي++ :) ؟

بالتوفيق،

المرفقات
Untitled.png

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 17 نوفمبر 2010 في 22:57

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11
اقتباس
ليست هناك حاجة بالكيجن و لا لتصميم كيجن مضاد..

ما يلزم فقط هو تغيير امر jnz الى jz .. يمكن عمل ذلك بواسطة patch.

أعلم ذلك و لكن درجة الكسر تختلف .. فكسر حماية البرنامج ليس كتصميم كيجن يتبع نفس الخوارزمية المعتمدة في الكيجن الأصلي ! :)

اقتباس
هل ستحمي برنامجك بهذه الخوارزمية . ؟!

المشروع هدفه تعليم المبتدئين و إثراء مستواهم البرمجي بقدر المستطاع و ليس كتابة كيجن و تشفيره ضد القرصنة ! و شتان ما بين الأمرين !!!

اقتباس
انها مجرد رياضيات للاطفال

اعتذر على التعبير ...

لماذا تعتذر عن تعبير كتبته بيمينك و بكامل إرادتك !؟

بافتراض أنني من الأطفال .. ألا يجب على الآباء توجيه أبناءهم بصفة تربوية و بأخلاق لائقة !؟

اقتباس
هذا هو البرنامج بعد ما قمت بعمل باتش له. الان اصبح يقبل أي اسم و اي سريال !

أنا أريد الشفرة بالسي++ إذا أمكن :)

اقتباس
أعتقد أن الخوارزمية تعمل على 3 أحرف من الاسم مع مصفوفة من الأحرف الثابته .. لم استطع تخمينها -جاري العمل- ولكني قربت من كسر الخورزامية

مرحبا بأستاذي الكبير :)

للأسف .. هذه ليست الخوارزمية التي اتبعتها .. أنتظر جديد تخميناتك :)

اقتباس
كما ذكر أن هذا لا يسمى حماية على الاطلاق..

خصوصا إذا كان المشروع مُوجه للمبتدئين و لا يهتم بأمور القرصنة !

اقتباس
ملاحظة: ما علاقة الموضوع بقسم سي++ :) ؟

الموضوع الصحيح يكون في منتدى الهندسة العكسية أو على الأقل في قسم الأسمبلي و لكننني أحببت أن أرى رأي إخوتي المبدعين و أساتذتي الفضلاء من هذا القسم :)

بالتوفيق.

تم تعديل هذه المشاركة بواسطة أحمد المتألق في 18 نوفمبر 2010 في 00:44

#12

مبدع ياخي احمد .. ^_^

اتمنى من الجميع ان يتفهمو ان هذه الدروس موجهه للمبتدئين .. لمعرفه كيف تصميم الكيجين .. وليست للاستعراض القدرات ..

وان شاءالله يتفهمو الامـر .. وماقصرت ياحمد .. والاعضاء كذلك لم يقصرو باجتهادهم بالمحاوله كسر الحمايه والايضاح اكثر لك ..

نتمنى لك التوفيق وننتظر موضوعك ومشروعك والشروحات .. ^_^

#13
اقتباس
مبدع ياخي احمد .. ^_^

اتمنى من الجميع ان يتفهمو ان هذه الدروس موجهه للمبتدئين .. لمعرفه كيف تصميم الكيجين .. وليست للاستعراض القدرات ..

وان شاءالله يتفهمو الامـر .. وماقصرت ياحمد .. والاعضاء كذلك لم يقصرو باجتهادهم بالمحاوله كسر الحمايه والايضاح اكثر لك ..

نتمنى لك التوفيق وننتظر موضوعك ومشروعك والشروحات .. ^_^

أشكرك أخي الغالي على المرور العطر مع أنني لا أستحق كل هذا المدح ! :blush:

تحياتي العطرة.

#14
أحمد المتألق كتب:

أنا أريد الشفرة بالسي++ إذا أمكن :)

لم أستعمل طريقة برمجية في الباتش.. عملت ذلك يدويا و المبدأ هو تغيير قيمة البايت الموجود في العنوان 1EB3 من 75 الى 74 كما هو موضح في الصورة.

يمكن عمل نفس الشيئ بطريقة برمجية: فتح الملف على شكل ios::binary والذهاب للعنوان 1EB3 ثم تغيير قيمة البايت و حفظ الملف من جديد.

38628591.gif

لكن بما انك طلبت كود C++ فتفضل أخي :(الملف التنفيذي المراد عمل باتش له يجب ان يكون في نفس مجلد المشروع)


#include <fstream>
#include <windows.h> // for Seleep() function.
using namespace std;

int main()
{
cout<<"\t\tWELCOME TO MINICALC PATCHER BY XPERO\n\n"<<endl;
cout<<"Patching Mini Calc.exe , please wait ...\n"<<endl;
ifstream infile ("Mini Calc.exe",ios::binary);
ofstream outfile ("Mini Calc_patched.exe",ios::binary);
infile.seekg(ios::beg);
outfile.seekp (ios::beg);
Sleep(200);
cout<<"Reading Source File...completed\n"<<endl;
while (!infile.eof())
{
outfile.put(infile.get()) ;
}
Sleep(200);
cout<<"Writing To Target File...completed\n"<<endl;
outfile.seekp (7859); // 7859==1EB3 in hex.
outfile.put('t');
outfile.close();
infile.close();
Sleep(500);
cout<<"Patching done ! Press any key to quit."<<endl;
getchar();
return 0;
}
#include <iostream>

تم تعديل هذه المشاركة بواسطة xpero في 18 نوفمبر 2010 في 02:55

1
#15

اليست الرسالة باللون الأصفر تعني نجاح العملية ؟ :)

#include <iostream>
using namespace std;

string getSerial (const string& name) ;

int main (int argc, char* argv[]) {
	string name = "222" ;

	string serial = getSerial(name);

	cout << "serial for: " << name << " is : " + serial << endl;
	return (0);
}

string getSerial (const string& name) {
	string constant = "ABCDEYZ67FLMN012345X89OPQRSTUVWGHIJK";
	string result = "" ;

	for (size_t i=0; i<name.size() ; i++) {
		int index = name % (i xor 19) ;
		result += constant[index];
	}

	return result;
}

الناتج هو أول 3 أحرف صحيحة، أما البقية فهي عشوائية :) .

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 18 نوفمبر 2010 في 02:07

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#16
اقتباس
لم أستعمل طريقة برمجية في الباتش.. عملت ذلك يدويا و المبدأ هو تغيير قيمة البايت الموجود في العنوان 1EB3 من 75 الى 74 كما هو موضح في الصورة.

يمكن عمل نفس الشيئ بطريقة برمجية: فتح الملف على شكل ios::binary والذهاب للعنوان 1EB3 ثم تغيير قيمة البايت و حفظ الملف من جديد.

كل الطرق تؤدي إلى روما و لكنها تتفاضل :)

#include <iostream>
#include <fstream>
#include <windows.h> // for Seleep() function.
using namespace std;

int main()
{
        cout<<"\t\tWELCOME TO MINICALC PATCHER BY XPERO\n\n"<<endl;
        cout<<"Patching Mini Calc.exe , please wait ...\n"<<endl;
        ifstream infile ("Mini Calc.exe",ios::binary);
        ofstream outfile ("Mini Calc_patched.exe",ios::binary);
        infile.seekg(ios::beg);
        outfile.seekp (ios::beg);
        Sleep(200);
        cout<<"Reading Source File...completed\n"<<endl;
        while (!infile.eof())
        {
        outfile.put(infile.get()) ;
        }
        Sleep(200);
        cout<<"Writing To Target File...completed\n"<<endl;
        outfile.seekp (7859); // 7859==1EB3 in hex.
        outfile.put('t');
        outfile.close();
        infile.close();
        Sleep(500);
        cout<<"Patching done ! Press any key to quit."<<endl;
        getchar();
        return 0;
}

كود جميل :wink: تسلم حبيبي :wub:

اقتباس
اليست الرسالة باللون الأصفر تعني نجاح العملية ؟ :)

بلى و رب الكعبة :) :lol:

اقتباس
الناتج هو أول 3 أحرف صحيحة، أما البقية فهي عشوائية :) .

اقتربتَ من الفكرة ... كنتُ أتوقع ذلك :wink: لأنك من أمهر المشفرين العرب :cool: مع أن كسر الكيجن بسيط جدا و لن يستنفذ كل كل طاقتك ! :happy:

===========

هذه هي الشفرة التي كتبتُها من أجل توليد السيريالات :

void Generat_keygen(char* key)
{
     char Generetor[] = "ABCDEYZ67FLMN012345X89OPQRSTUVWGHIJK";
     int x = 0,i;
     for(i = 0;i<strlen(key);i++)
     {
         cout<<Generetor[key%(19^i)];
         if(x++ == 3 && i != 15)
         {
            cout<<" - ";
            x = 0;
         }
     }
     srand(time(NULL));
     for(int k = strlen(key);k < 16;k++)
     {
         cout<<Generetor[rand() % (19^k)];
         if(x++ == 3 && k != 15)
         {
            cout<<" - ";
            x = 0;
         }
     }
}

بشكل عام فإن فكرة الخوارزمية هي كالآتي :

طول الإسم يجب أن يكون أكبر أو يساوي 3 و أقل أو يساوي 16.

يتم أخذ حرف من السلسلة Generetor حسب المعادلة :

key%(19^i)

هذا في حالة طول الإسم يساوي 16 (أي القيمة القصوى), أما إذا كانت عدد حروف الإسم أقل من 16 فسيتم اختيار أحرف من السلسلة Generetor حسب المعادلة أعلاه بينما يتم توليد أحرف عشوائية في بقية السيريال حتى يكتمل إلى 16 حرف. هذه هي الفكرة باختصار شديد و سأوضحها أكثر عندما أطرح موضوع المشروع في المنتدى :)

بالتوفيق.

تم تعديل هذه المشاركة بواسطة أحمد المتألق في 18 نوفمبر 2010 في 03:07

#17

يبدو الموضوع ممتع ، ولكن اللغة الفرنسية عائق كبير ، هل يمكن ترجمة الرسائل إلى اللغة الانجليزية أو على الأقل كتابة ماذا تعني باللغة العربية هنا في المنتدى ( عشان نفهم :-) ) .. أعتقد قوّة التشفير تكمن في اللغة الفرنسية :D .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#18

السلام عليكم و رحمة الله تعالى وبركاته

يشرفني مرورك أستاذي الشمري :wub:

اقتباس
يبدو الموضوع ممتع ، ولكن اللغة الفرنسية عائق كبير

عليك بتعلم الفرنسية ! :lol:

اقتباس
هل يمكن ترجمة الرسائل إلى اللغة الانجليزية أو على الأقل كتابة ماذا تعني باللغة العربية هنا في المنتدى ( عشان نفهم :-) )

من عيوني :wub:

اقتباس
أعتقد قوّة التشفير تكمن في اللغة الفرنسية :D .

اللغة الفرنسية ليست مشفرة بالـ MD5 ! :P

================

في بداية البرنامج ستظهر هذه الواجهة :

X---------------------o0o---------------------X
| 1-Pour générer un nouveau numéro de série   |
| 2-A propos du programmeur.                  |
| 3-pour quitter le programme.                |
X---------------------o0o---------------------X

و معناها :

1- من أجل توليد سيريال جديد.

2-حول المبرمج.

3-من أجل مغادرة البرنامج.

عند الضغط على 1 ستظهر الجملة votre nom و معناها "أدخل اسمك", في حالة كان الإسم موافق للشروط سيُظهر البرنامج السيريال المقابل للإسم المُدخل, هكذا :

le numéro de série est : CAD7 - 77X4 - XB1P - 4DO5

و معناها :

السيريال المقابل للإسم المُدخل هو : ...

عند الضغك على 2, ستظهر العلومات التالية:

A propos du programmeur :

Nom : Ahmed Mohamed.

prénom : ELM0uTe2ElI9.

Année de naissance : 1992.

La vocation : Programmation et le piratage.

E-mial : elmoute2eli9@hotmail.com.

و معناها :

حول المبرمج :

الإسم : أحمد/محمد

اللقب : المتألق (إن شاء الله :D)

سنة الميلاد : 1992

الهواية : البرمجة و الهاكينج.

الإيميل : elmoute2eli9@hotmail.com

___________________________________

نأتي الآن لرساءل الخطأ :

  • عندما يكون طول الإسم أقل من 3 أحرف ستظهر الرسالة التالية :

    Le nom doit être de longueur >=3



    و معناها :
    يجب أن يكون طول الإسم أكبر أو يساوي 3.

  • إذا كانت عدد حروف الإسم تتجاوز 16 (خشية حدوث overflow) ستظهر هذه الرسالة :

    Le nom doit être de longueur <=16


    و معناها (كما هو واضح) :
    يجب أن يكون طول الإسم أقل أو يساوي 16.

  • عندما يحتوي الإسم علىرمز أو حرف غير انجليزي مثل é,ê,à,è,ç (و تلك حروف فرنسية) أو رموز مثل {,#,_,.... فستظهر الرسالة التالية :

    le nom peut contenir des lettres anglaises, des chiffres seulment


    و معناها :
    الإسم يجب أن يحتوي على أعداد أو حروف انجليزية فقط.

  • أما إذا ضغط المستخدم على enter قبل أن يُدخل أي شيء فستظهر الرسالة التالية :

    Vous n'avez entreé aucun caractère ! - Recommencez


    و معناها :
    إدخال فارغ !

سأشرح (الكيجن + البرنامج الرئيسي) أكثر عندما يحين الوقت المناسب, إلى ذلك الحين أترككم في رعاية الله و حفظه :)

بالتوفيق.

1
#19

شكراً أخ أحمد ،

واضح الآن .

-

@وجدي :

كل عام وأنت بخير ،

هل استخدمت الهندسة العكسية لاستنتاج الخوارزمية المستخدمة ، أم كيف خرجت بالكود ؟

@ xpero :

شكراً على شرحك لطريقة " الباتش " ،

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#20

الشمري

العفو أخي.happy.gif

#21
Devd كتب:

هل ستحمي برنامجك بهذه الخوارزمية . ؟! انها مجرد رياضيات للاطفال

اعتذر على التعبير ...

مرفق .... الكيجن مع السورس(VB.NET2008)...


Public Class Form1
Dim const_str As String = "ABCDEYZ67FLMN012345X89OPQRSTUVWGHIJK"

Sub calcaulate_codes(ByVal User_Nmae As String)
Dim register_code As String = ""
k = -1
For i = 1 To Len(User_Nmae)
k = k + 1
gen_reg = Microsoft.VisualBasic.Mid(User_Nmae, i, 1)
gen_reg = Val(Asc(gen_reg))
index_xor = k Xor &H13
gen_reg = gen_reg Mod index_xor
register_code = register_code & Microsoft.VisualBasic.Mid(const_str, gen_reg + 1, 1)
Next i
Randomize()
For i = 1 To 16 - Len(User_Nmae)
randomvalue = CInt(Int((24) * Rnd() + 1))
register_code = register_code & Microsoft.VisualBasic.Mid(const_str, randomvalue, 1)
Next
txtresult.Text = Microsoft.VisualBasic.Mid(register_code, 1, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 5, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 9, 4) & "-" & _
Microsoft.VisualBasic.Mid(register_code, 13, 4)

End Sub
Private Sub txtusername_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtusername.TextChanged
calcaulate_codes(txtusername.Text)
End Sub
End Class

إذا كانت هذة رياضيات للأطفال فلماذا تشارك فيها أتركنا نتعلم ولا تؤذينا بتعليقاتك

ننتظر الشرح أخى أحمد

وشكرا لك على الموضوع

تم تعديل هذه المشاركة بواسطة ringawy في 8 ديسمبر 2010 في 05:32

#22
ringawy كتب:

إذا كانت هذة رياضيات للأطفال فلماذا تشارك فيها أتركنا نتعلم ولا تؤذينا بتعليقاتك

ننتظر الشرح أخى أحمد

وشكرا لك على الموضوع

@ringawy:

تعلّم ولن يمنعك أحد، كما أنك لن تمنع أحداً من المشاركة فالرجل لم يخطئ في حق أحد وأشاطره الرأي بأن هذه ليست خوارزمية لحماية برنامج.

الآن ما أريد إيصاله للجميع بأن الموضوع إن كان تعليمي لمن يريد الاستزادة حول حماية برامجه فهذا ليس الموضوع المناسب (مع تقديري لجميع من شارك به) فالموضوع لم يذكر أي شئ عن كيفية تتبع خوارزمية البرنامج وكيف تم تحليل عملها ومن ثم إيجاد الطريقة المناسبة لكتابة مولد مفاتيح. كل ما رأيته هو خوارزميات مولدات المفاتيح، لا أكثر ولا أقل..

فما هو العلم الذي كنت تبحث عنه أخي ringawy ؟

هل الموضوع لتعلم البرمجة ؟

* سيتم نقل الموضوع إلى قسم حماية التطبيقات التابع لقسم الأسمبلي.

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#23
Xacker كتب:

@ringawy:

تعلّم ولن يمنعك أحد، كما أنك لن تمنع أحداً من المشاركة فالرجل لم يخطئ في حق أحد وأشاطره الرأي بأن هذه ليست خوارزمية لحماية برنامج.

الآن ما أريد إيصاله للجميع بأن الموضوع إن كان تعليمي لمن يريد الاستزادة حول حماية برامجه فهذا ليس الموضوع المناسب (مع تقديري لجميع من شارك به) فالموضوع لم يذكر أي شئ عن كيفية تتبع خوارزمية البرنامج وكيف تم تحليل عملها ومن ثم إيجاد الطريقة المناسبة لكتابة مولد مفاتيح. كل ما رأيته هو خوارزميات مولدات المفاتيح، لا أكثر ولا أقل..

فما هو العلم الذي كنت تبحث عنه أخي ringawy ؟

هل الموضوع لتعلم البرمجة ؟

* سيتم نقل الموضوع إلى قسم حماية التطبيقات التابع لقسم الأسمبلي.

يا أخى هذا مشروع لبرمجة برنامج بلغة سى بلس بلس ومحمى بخوارزمية بسيطة ولة كيجن بنفس اللغة أيضا

والأخ أحمد سوف يبدأ فى شرح برمجة هذا البرنامج عن طريق لغة سىبلس بلس (وهنا سوف نبدأ الاستفادة من هذا المشروع لتعلم البرمجة) والمعادلة البسيطة التى يستخدمها أخى أحمد هى إحدى مراحل تعلم البرمجة فى السى بلس لحل المعادلات

وشكرا لك أخى على التعقيب

#24
ringawy كتب:

والمعادلة البسيطة التى يستخدمها أخى أحمد هى إحدى مراحل تعلم البرمجة فى السى بلس لحل المعادلات

فيقوم بفتح موضوع في المنتدى لاختبار قوة الخوارزمية مع معرفته بأنها بسيطة و "تعليمية" فقط ؟ أعتقد أن الموضوع فقد جوهره بهذا الفعل أو أن أحدنا لم يتابع مشاركات الموضوع من بدايته حتى نهايته.

على كل حال، يستطيع الأخ أحمد حال إكمال المشروع فتح موضوع جديد في قسم C++ ويشير إلى وجود هذا الموضوع في الجزء الذي يتعلق بقوة الخوارزمية، فمن غير المنطقي أن يتابع في مشروعه ضمن هذا الموضوع فعمله سيكون backwards ولن يساعد المبتدئين.

السلام عليكم.

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#25

السلام عليكم،

User Name: Z3r0n3

Serial: 12NA56

تقوم الخوارزمية بتنفيذ التعليمة XOR المنطقية لمؤشر الحرف مع القيمة 13h (19)

XOR EAX,13h

ثم تقوم بقسمة كود ASCII الحرف على القيمة المتحصل عليه من التعليمة XOR. عندها سيحتوي EDX على باقي القسمة وهو إزاحة حرف السريال من عنوان الفتاح -441000h-

=======

كتبت مولد مفاتيح بلغة الباسكال :ph34r:

PROGRAM KeyGen;
USES wincrt;
VAR
    Key,User,Serial:string[20];
    i,x,P:integer;

BEGIN
    Key:='ABCDEYZ67FLMN012345X89OPQRSTUVWGHIJK';
    Writeln('      *** *** *** *** *** Mini Calc: Key Generator *** *** *** *** ***');
    Writeln('         -=-=-=-=-=-=-=-=-=- CodedBy: Z3r0n3 -=-=-=-=-=-=-=-=-=-=-=-=-');
    Writeln('                                 AT2000');
    Writeln('User Name:');
    Readln(User);
    Serial:='';
    FOR i:=0 TO Length(User)-1 DO
         BEGIN
              P:=i XOR 19;
              x:=Ord(User[i+1]) mod P;
              Serial:=Serial+Key[x+1];  
         END;
    Writeln('Serial: ',Serial);
END.

و في المرفق هناك مولد مفاتيح و باتش بلغة الأسمبلي :wub: .

إقتراح:

ما رأيكم في أن نتحدى بعضنا البعض من خلال برمجة CrackMe's نبدع فيها طرق حماية جديدة و نضعها هنا لنمارس عليها العنف :mad: و نكسرها و نضع التقنيات التي إستخدمناها في عملية الكسر و بذلك نكتسب خبرة في حماية البرامج و في نفس الوقت كسر البرامج. ما رأيكم؟

Keygen.zip

تم تعديل هذه المشاركة بواسطة Z3r0n3 في 23 يناير 2011 في 19:17

مواضيع مشابهة