منتديات دريم السعودية

منتديات دريم السعودية (http://www.dreamsaudi.net/index.php)
-   منتدى Windows-11 و برامجه الأساسية (http://www.dreamsaudi.net/forumdisplay.php?f=6)
-   -   كيف اصنع كراك (http://www.dreamsaudi.net/showthread.php?t=16535)

الجدار الناري 19-05-2003 01:45 AM

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

chik 03-06-2003 09:12 PM

بداية البداية
 
ادا كنت تريد صنع كراك فيجب أن تتوفر على بعض الأدوات الأساسية من بينها
- ديبوكور (Debogger) لكي تستطيع التنقل والتوقف داخل البرنامج المستهدف للكراك وأنصحك باستعمال
(Softice4.05 from Numega)يمكنك أن تجده في عدة مواقع واختر حسب جهازك ان كان window95-98 nt 2000 or xp.
- ديزاسمبلور(Disassembler) لتتمكن من تحويل أرقام البرنامج الى لغة الأسمبلر هناك برنامج (W32Dasm).
- (HexEditor) برنامج يحول أرقام البرنامج المستهدف الى(Hexadecimal) مثل (WinHex)
- بعض المعلومات عن برمجة(Assembler)
ليس هناك طريقة مثالية لكراك كل البرامج لأن في غالب الأحيان كل واحد لة مميزاته حيث يمكن أن تجعل كراك في دقيقة أو في أيام لكن يمكن تتبع الطريقة التالية
-انظر كيف يعمل البرنامج المستهدف(MessageBox, windows,Timelimit etc...)
-وضع نقطة توقف من Debgogger في النقطة الحساسة
- في غالب الأحيان نجد شيءا مثل

cmp reg,something compare for example time limit or anything
jz xxxx if the comparison ,jump somehere say for example if time limit go to the routine xxxx to escape
Then we can patch the prog by forcing it go to the next statement
هده بعض المقاربات ويجب التجربة كثيرا والتعود على استعمال Debogger
أتمنى أن تكون هده بداية وأن أكون أعطيتك مجرد رؤيا لأن ليس هناك وصفة جاهزة للكراك
وأنا رهن الاشارة

الجدار الناري 04-06-2003 01:18 AM

مشكور بس والله مافهمت ولا شئ
واقول ......... جزاك الله خير

chik 04-06-2003 05:21 PM

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

الجدار الناري 05-06-2003 02:52 AM

الله يطول في عمرك

mack 05-06-2003 03:38 AM

:good:

الجدار الناري 06-06-2003 02:57 AM

:crooked:

ابوعجباء 11-06-2003 10:34 PM

:heart:

الجدار الناري 12-06-2003 11:17 AM

:crooked: :crooked:

ahmedbna 12-06-2003 11:20 AM

مرحبا اخى
 
برنامج Softice4.05 from Numega ليس له اثر الا فى قليل من المواقع
وكل المواقع الموجود بها تجدها ان ربطها مفقود ، او لا يعطوك البرنامج
فنرجو منك ارسادنا على موقع تعرفه انت يمكننا نت خلاله فى انزال البرنامج
على اجهزتنا
وشكرا

chik 12-06-2003 05:36 PM

يا أخي كما تعرف إن المواقع تأتي وتدهب . إنما جرب الموقع التالي فأنا جربته قبل ثوان من كتانة هده السطور وهو شغال وكما قلت سابقا اختر حسب الوندوز اللي عندك 9x or NT وادا كان عندك XP فيجب تحميل NT لكن يلزمك أيضا باتش وإدا كان كدلك يمكنني إرساله لك لأن الباتش صغير الحجم.
وحظ سعيد.
[فقط الاعضاء المسجلين هم من يمكنهم رؤية الروابط. اضغط هنا للتسجيل]
إلى اللقاء.

layaly 12-06-2003 09:22 PM

مشكوووور0000و جزاك الله الف خير:D :) :( :p :good:

ahmedbna 14-06-2003 10:05 AM

ممتاز اخى ومشكور جدا
 
فى البداية مشكور جدأ اخى الكريم على ما قدمته
انا استعمل برنامج hex workshop منذ مدة ليست طويلة وقد اخترقت عدة برامج بسيطة به ، لكنى لم اسمع ببرنامج SoftIce من قبل
ولى بعض الأستفسارات فأرجو الأجابة
1 - ما حكاية البتش الذى ذكرته
2 - نرجو منك شرح كيفية استعمال SoftIce
وشكرا لك لن اطيل عليك هذه المره
[فقط الاعضاء المسجلين هم من يمكنهم رؤية الروابط. اضغط هنا للتسجيل]

ahmedbna 14-06-2003 02:32 PM

ملحوظة اخرى
 
ملحوظة بسيطة اخرى نسيتها
ملحوطة بسيطة اخرى نسيت اذكرها فى الأسئلة السابقة
برنامج SoftIceW9x405 يطلب سيريال نمبر فى بداية التحميل فهل تعرف هذا الرقم

chik 16-06-2003 06:46 PM

أشكر الجميع على كتاباتهم وأعتدر عن التأخير .
1- السيريال جرب 5109-0122DF-FF بلنسبة ل Softice4.05-9x
2- الباتش الدي دكرته هو بانسبة ل windows XP يعني إدا كان عندك XP يجب تثنيت softice NT زائد الباتش. أما إدا كان عندك 9x فلا تحتاج الى أي شيء اخر.
الان نفترض ان عندك 9x
3- عند التثبيت عندما يطلب منك VGA اتركها في Standard وانقر Test ليتأكد من دلك وبعد دلك اختر نوع الماوس اللي عندك واترك المسائل الأخرى كما هي وفي غالب الأحيان التثبيت ما فيه مشاكل.
4- الان تم التنصيب وإعادة اشتغال الكمبيوتر اضغط
(CTRL + D press CONTROL and D) إدا كان الكل قد تم على ما يرام فسوف تشاهد شاشة سوداء وفيها بعض الأرقام حرك الماوس ولاحض أنه يتحرك داخل الشاشة السوداء فإدا لم يتم راجع معطيات الماوس اللي عندك. إدا تم الكل بخير أضغط مرة أخر CTRL +D أو F5 لكي ترجع إلى حالتك الأولية.
5- لكي تتمكن من تشغيل أحسن أضف بعض المعتطيات في ملف winice.dat الموجود في مكان التثنيت أو أنصحك بتحميل المرفق غير اسم winice.dat اللي عندك الى اسم اخر وضع مكانه المرفق. وأعد التشغيل.
6- إدا حصل أي مشكل ما والوندوز لا يريد أن يعمل أعد تشغيل الكميوتر واضغط على F8 باستمرار حتى يضهر لك قائمة المواد اختر command line - Safe mode ثم اكتب
Edit autoexec.bat وأزد الكلمت REM في السطر اللي فيه winice ليصبح كالتالي
REM C:\PROGRA~1\NUMEGA\SOFTIC~1\WINICE.EXE
سجل وأعد التشغيل.
هدا بانسبة للتنصيب أما بالنسبة للتشغيل فسوف أنجز في المرة القادمة مثالا لكن سأبحث عن مثال سهل جدا حتى يتسنى الفهم.
بانسبة للدين يعرفون شيئا عن Debogers يمكن البدء ب
تشغيل (Softice loader(start->program->numega) افتح أي برنامج مثلا calc.exe
أنقر Load ولا تبال بما يقول انقر OK ادا تمت الأمور فستضهر Softice وقد توقفت عند العليمة الأولى ل
calc.exe حين دلك يمكنكم التشغيل تعليمة بتعليمة باضغط على F10 أو F5 للتشغيل كاملة.
أتمنى أنني كنت مفهوما وإلى المرة المقبلة وإني تحت إشارتكم .

chik 16-06-2003 06:49 PM

1 مرفق
السمح نسيت المرفق فها هو.

الجدار الناري 17-06-2003 12:23 AM

مشكورين اخواني وجزاكم الله خيرا عنا

ahmedbna 17-06-2003 10:52 AM

ممتاز جدا اخى ولى تعليقات
 
السلام عليكم : من جديد
فى البداية اشكرك اخى على السريال نمبر ولكن احب ان اقول لك انى وجدت السريال نمبر بعد ساعات بسيطة من كتابة الرسالة لك وقد وجدتة بواسطة برنامج hex workshop .

- بالنسبة لى فى البداية لم تواجهنى اية مشكلة فى تحميل البرنامج او تشغيلة
- لماذا بدلت ملف winice الموجود فى البرنامج بملف أخر
- لا اعرف الهدف من ذكرك لهذا المثال البسيط اقصد مثال calc وما مدى الأستفادة منه علما بأنى جربته اقصد المثال ، ولكن لى بعض التعليقات
1 - ذكرت الأمر load فى المثال لتحميل calc ، ولكن اذ اخترت load exportes تظهر لك الرسالة error unkown error
2 - انا عن نفسى اخترت الأمر open module لفتح calc.exe واعطانى الرسالة oppened seccssfuly .
3 - على فكرة اذ ضغطت F5 على هذا الوضع لم يظهر لك شيى
4 - اضغط على الزر LOAD ثم OK تظهر لك شاشة سوداء شبيهة بشاشة DOS
5 - عند ذلك يمكنك الضغط على مفتاح F5 لتشغيل CALC.EXE
-----------------------------------------------------------------------------------------------
لقد اطلت عليك لا تزهق منى ---
++ على فكرة لا ارى فرق بين الأمرين LOAD EXPORTES و OPEN MODULE من حيث تشابة ملفات الفتح والأستيراد للأمرين .
صديقى الجليل، كل ما اطلبه منك هو شرح مفصل للبرنامج وطريقة استعماله

chik 19-06-2003 12:38 AM

مثال لإستعمال سوفتايس .

سنقوم بمثالنا على برنامج Ver 2.3 winpack.exe وهو برنامج للباك مثل الوينزيب ولكنه يمكن أن يفتح مختلف

الملفات zip rar etc.. لكن ليس هدا الدي يهمنا الان. والبرنامج يمكن تحميله باسم wpack32d.

أولا نثبت البرنامج بعد دلك نقوم بنسخ البرنامج winpack.exe ودلك احتياطا إدا ما قمنا بخطئ ما تكون عندنا النسخة الأصلية لكي نرجعها إدا دعت الضرورة لدلك.

نشغل البرنامج ونلاحض أنه يشتغل في شكل شيروير ليس مشكلا فهدا ما كنا نريده. نقفل برنامجنا هدا ونغير توقيت الكمبيوتر من السهل مثلا نزيد فيه سنة 2004 .

نشغل البرنامج من جديد وهنا نلاحض أنه يعطينا إنذار بأننا لم نسجل البرنامج وحين ننقر OK الكل راح يا حسرتاه فما العمل إذن.

دعنا الآن وقبل البدء نعطي بعض المعلومات والتوضيحات.

إن برامج الوندوز تعتمد على API بكل اختصار فهي عبارة عن برامج توجد في مكتبات الوندوز(dll ) مثل

Kernel32.dll user32.dll gdi32.dll أو غيرها ومن مميزات softice أنه يمكننا التوقف عند أي

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

CTRL + D حتى تضهر النافدة السوداء لسوفتايس بعد دلك نكتب

Bpx name_of_the_function

Bpx تعني لسوفتايس break point أو نقطة توقف

Name_of_the_function اسم API التي نريد أن نتوقف عندها ففي مثالنا هدا سنكتب.

Bpx messageboxa لاحضوا a في الأخير فهدا يعني أننا في 32bit فهدا لا يهمنا الان.

مادا تعني bpx messageboxa يعني أن سوفتايس سيتوقف إدا ما قام أي برنامج باستدعاء MessageBoxA أو بطريقة أخرى قبل أن تعرض وندوز أي إندار من نوع MessageBox.

إن سوفتايس لديه عدة Commands لا يمكنني سردها كلها وسنعطي بعضها الان :

BPX name_of_function or number_address

نقطة التوقف متبوعة باسم API أو رقم عنوان الداكرة التي نريد أن نتوقف عندها

BL (BreakPoint List)

BL تعطينا لائحة نقط التوقف التي أنجزناها .الأول يحمل رقم 0 الثاني 1 الخ...

BC number_of_breakpoint (BreakPoint Clear)

BC تقوم بمسح التوقف الدي لا نرغب فيه. مثلا إدا أردنا أن نمسح التوقف رقم 0 و 4 و 7 نكتب مرة

واحدة bc 0 4 7 ويمكننا كتابة bc * وهدا الأخير سيمسح الكل.

BD number_of_breakpoint (BreakPoint Disable)

BE number_of_breakpoint (BreakPoint Enable)

Bd توقف عمل التوقف الدي نريد . التوقف دائما موجود لكن غير شغال والعكس

BE يعيد تشغيل التوقف ثانية وفي كلتا الحالتين يمكننا استعمال * .

نكتفي بهدا القدر الدي سيهمنا الان ويمكن لأي أحد أن يتعرف على البقية في ملف المساعدة.

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

(Assembler) لكنه يعرف بعض المبادئ الأساسية للبرمجة, بعض المعلومات عن Basic مثلا أو غيره.

إن الأسمبلر يعتمد على eax,ebx,eip etc Registers وهؤلاء نشاهدهم في النافدة العليا لسوفتايس والدي يهمنا في هدا المثال هو EIP وهو يعطي رقم عنوان التعليمة التي سيقوم الحاسوب بإنجازها والحاسوب يقوم بتعليمة ثم التي بعدها ثم بعدها إلا في بعض التعليمات .

Jmp number (jump to the address number . Inconditionnal jump)

حين يصل إلى هده التعليمة فإن الحاسوب وكيفما كانت الضروف ينتقل إلى التعليمة المتواجدة في الداكرة رقم number فهى مثل التعليمة GoTo في البازيك.

Jx number (conditionnal jump to number- jz-jnz-ja – jb –jl – jg – je – etc…)

هنا x حرف أو حرفان مثل jz ja إلخ وهده التعليمة تعني أن الحاسوب قام بعملية أو مقارنة ما وحسب نوع x فإن الحاسوب سيدهب إلى التعليمة number أو لا حسب نتيجة المقارنة فهده العملية هي مثل

If (xxxx) then goto في البازيك وهده مهمة جدا في الكراك لأن في غالب الأحيان فإن البرنامج يقوم باختبار تاريخ الحاسوب ليرى إن تمت حصة التجريب أم لا زال.

Cmp date,date1

Jl good_date

Date_ finish

في هدا المثال يقوم البرنامج بمقارنة التاريخ date مع التاريخ date1 فإدا كان أصغر فهو يعتبر أن مرحلة التجريب لم تتم بعد ويشتغل البرنامج وفي الحالة الثانية يكف البرنامج عن التشغيل فمثلا لو نبدل jl ب jmp

بما أن jmp هي عملية قفز بدون شروط فإن البرنامج وفي جميع الحالات وكيفما كان التاريخ سيدهب إلى good_date ويبقى دائما شغال ففي معظم الحالات الكراك يقوم حول عملية من نوع jx.

في مثالنا نكتفي بهدا وأنصحكم كثيرا بتعلم الأسمبلر.

بعد هده الدورة النظرية نرجع إلى برنامجنا WinPack .

CTRL + D تظهر نافدة سوفتايس نكتب في النافدة السفلى :

bpx messageboxa

-طبعا أي command نكتبها في سوفتايس تتبع ب Enter –

نضغط f5 بعد دلك نقوم بتشغيل برنامجنا WinPack . اه مادا نرى ظهرت نافدة سوفتايس لوحدها وقد توقفت عند العنوان

User32|MessageBoxA

017F :BFF5412E

لقد قام سوفتايس بما أمرناه فقد توقف عند MessageBoxA التي توجد في user32.dll وعنوانها هو

:BFF5412E 017F وباللون الأخظر في الأسفل نقرأ user32 هدا يعني أننا الان موجودون في user32 فهي لا تهمنا لأننا لا نريد تغييرها. نضغط F12 وهنا نرى نافدة البرنامج ننقر ما يمكن نقره وسوفتايس يظهر من جديد. في هده المرة نرى :

017F :004F4270 Mov [ESI] , EBX

دعنا نعطي بعض التوضيحات 017F وهو ما يسمى ب Descriptor or segment حسب نوع البرنامج وفي الحقيقة ليس لنا به شغل فلتكن نتيجته ما شاء.

004F4270 عنوان الداكرة ب Hexadecimal وهدا الرقم هو العنوان التي توجد بها المعلومات التي سيقوم الحاسوب بإنجازها ونلاحظ أنه نفس الرقم في EIP في أعلى النافدة.

Mov [ESI] , EBX هده هي المعلومة(Instruction) بلغة الأسمبلر مثلا هنا يأمر الحاسوب بوضع مقدار EBX في العنوان المشار إليه في ESI وإن لم نفهم هدا ليس مشكلا.

نضغط مرتين على F12 لنجد أنفسنا في

017F :004EBF7D Test eax , eax

004EBF7F jnz 004EBF96

نحن الان في المعلومة 004EBF7D والحاسوب سيقوم بعملية Test حتى إدا لم نعرفها لا يهم بعدها نرى

jnz 004EBF96 إدا كانت النتيجة غير صفر يقفز البرنامج إلى العنوان 004EBF96 .ها نحن نقترب.

الان نضغط على F10 وهدا يمكننا من تشغيل البرنامج خطوة خطوة أو تعليمة بتعليمة ونرى أن EIP تحول إلى

004EBF7F إدن التعليمة التالية وهنا نرى في الأيمن NoJump هدا يعني أن نتيجة Test لا تمكنه من القفز إلى العنوان 004EBF96 إدن سيمر إلى التعليمة الموالية. ننقر فوق العنوان 004EBF7F ونتأكد أن Cursor هو الان في هدا السطر هنا نضغط على F9 و F9 تقوم بوضع نقطة توقف في العنوان الدي يوجد به Cursor ننجز BL لنتأكد أن الان عندنا نقطتين توقف 0 و 1 .

نتمشى الان بالضغط كل مرة على F10 حتى نصل إلى 4EBF8A هنا نضغط على F10 مرة أخرى وفي نفس الوقت نلاخظ أن نافدة WinPack قد اختفت من وراء سوفتايس هدا يعنى أن WinPack قد بدأ في الإغلاق وهدا لم نكن نريده فنحن نريد أن يبقى مشتغلا وهنا نقول ليتنا لم نمر بهدا الطريق بعد دلك وفي العنوان

4EBF94 jmp 4EBF9D هنا يقفز البرنامج الى العنوان المدكور ونلاحظ أنه يقفز على 004EBF96 الدي كان سيؤدينا إليه jnz 004EBF96 أعلاه وفي نفس الوقت يجنبنا الطريق التي لم تعجبنا من قبل.

هنا نضغط F5 مع خيبة أملنا لأننا لم نحقق شيئ ونقوم مرة أخرى بتشغيل البرنامج مثل الأول يقف سوفتايس في MessageBoxA ننقر الإندار نضغط F5 وهنا يقف عند النقطة 004EBF7F jnz 004EBF96 التي كنا اخترناها من قبل ونرى دائما في اليمين NoJump هنا سنغير المجرى العادي للبرنامج هو في الحقيقة لا يقفز إلى العنوان المدكور لكن نحن سنرغمه.

نجر الماوس إلى EIP=004EBF7F أعلى النافدة وننقر 7 لنجعل Cursor فوق هدا الرقم هنا نتأكد من أن زر الأرقام (Verr num) شاعل ونكتب فوق 7 96 ليصبح EIP=004EBF96 يعنى العنوان الدى كان قد يؤدينا إليه لو تم القفز من قبل.

هنا نشد أعيننا ونضغط F5 , دعوة صغيرة , ونفتح أعيننا ومادا نرى إن البرنامج المسكين شغالا وكأن شيئ لم يكن.

سنكتفي بهدا القدر في هده الحصة حتى أرى ما هي اراء الإخوة والمرة القادمة سنرى كيف ومادا نبدل في البرنامج ليشتغل بدون سوفتايس لأن الان عرفنا مادا يقع بعجالة افتحوا WinPack في أي برنامج HexEditor مثل WinHex hexWorkShop etc.. ادهبوا إلى Offset EB37F ستكون هناك الأرقام اتالية 75 15 8b etc.. بدلوا الرقم 75 بالرقم EB وسجلوه تحت اسم WinPack_Cr1 أوقفوا البرنامج هدا وشغلوا WinPack_Cr1 إدا كانت نقط التوقف لسوفتايس لا زالت شغالة فقوموا مثل الأول ولكن هده المرة ستلاحظون أت التعليمة jnz قد تبدلت إلى jmp وهدا ما كان هدفنا حيث أن 75 هي رقم التعليمة jnz و EB هي Jmp الان CTRL D and BC* لنمسح جميع نقط التوقف F5 ونشغل برنامجنا الجديد.وإن ظهرت أي مشاكل أخرى لهدا البرنامج لا يهمنا أمره لأن هده مجرد تجربة أولى . وفي الحصة القادمة أيضا سنرى أيضا كيف يمكننا أن نتخلص من الإندار الدي يظهر في البداية حتى يكون عندنا برنامج شغال مية مية.

هناك مثلا برنامج Update ل Norton حمل مثلا اخر Update وإدا لم يشتغل بحيث يقول أن الوقت انتهى أو إدا أردت زد في تارىخ حاسوبك حتى لا يشتغل Update وقم بكراكه فهو شبيه بمثالنا هدا إد يعتمد على MessageBoxA فقط.

حظ سعيد للجميع في انتظار ارائكم أو أسئلتكم.

chik 19-06-2003 12:55 AM

For ahmrd
 
I have no Arabic in this computer so I send in english and may be next time I'll translate it.First open an exe will just load it not for debug but when you load it you have a debuggie and as I siad don't worry about the error message it is normal because the exe doesn't contain the symbols.I don't know the limitations of hex workshop but could you crack a program if the crack is not in the same exe or if it's protected or compacted.with softice you can debug o program and you have the code in assembler and you can do what ever you wish. You have to change winice because by default it doesn't take user32 gdi32 etc and I added wd and faults off to show the window display and to let windows take the errors . By the way add ; after faults off I forgot it.
If you need translation I'll do it next time
Bye

الجدار الناري 21-06-2003 03:27 AM

جزاكم الله خيرا ...
:kiss: :kiss: :kiss: :kiss:

ahmedbna 21-06-2003 10:03 PM

hello chik
 
thank you my friend chik . i got your message
but please next time let's talk by arabic , so all friends can
understanding . and this is my new questions to you by arabic



كلامك كله ممتاز ولكن عند كتابتى الأمر bpx messageboxa
افاجى بظهور خطأ symbol not defined (messageboxa)
- ولكن اذا كتبت bpx messangebox فقط بدون حرف a
فان البرنامج يقبل الأمر ، ولكن مع الأسف عندما تشغل برنامح winpack تظهر لك نفس الرسالة العادية والتى تفيد بأن البرنامج مدته انتهت expired you may rigister
وشكرا لك صديقى

الجدار الناري 21-06-2003 11:20 PM

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

ثم يشتغل البرنامج

وشكرا

chik 23-06-2003 07:05 PM

أولا أعتدر عن عدم الكتابة باللغة العربية في المرة السابقة وكما قلت فالسبب أنني كنت في مكان ليس فيه حاسوب يمكنني من كتابة العربية وفيما يخص الآراء يمكن أن أقول :
- كما قال الأخ الجدار الناري يمكن أن نرجع الوقت إلى الوراء لكن هده العملية لا تعمل مع جميع البرامج فهناك من يدهبوا أبعد من دلك فيمكن أن Format القرص وحين تثبت الوندوز والبرنامج من جديد تبقى في داكرته أن البرنامج قد ثبت من قبل وقد انتهت مدته ومثال دلك بعض البرامج المحمية من CDILLA لأن المعلومات تسجل في مكان ما من القرص. ويمكن أن نتتطرق مستقبلا إلى بعض هده الأنواع إلا أنها تكون شيئا ما أصعب .
- فيما يخص الأخ أحمد أقول لك أنك ربما لم تغير الملف Winice.dat لدلك يكون عندك الخطء عندما تكتب Bpx MessageBoxA . لأننا كما نعلم فإن MessageBoxA تكون في User32.dll إدن أفتح WinIce.dat في Notepad وانظر في الأسفل حتى ترى شيئا مثل :
EXP=c:\windows\system\user32.dll ;

إدا كانت هناك النقطة والفاصلة في أول السطر يجب حدفها لأنها إدا بقيت فكل ما في User32.dll لا يعرفه سوفتايس ويعطيك الخطء اللي جئت به.بعد التصحيح هدا يجب طبعا تسجيل WinIce.Dat وإعادة تشغيل الحاسوب حتى تؤخد هده التعديلات بعين الإعتبار.
وأنصحك أيضا أن تشغل– حدف ؛ في أول السطر - السطور اللي فيها:
Kernel32.dll – user32.dll – gdi32.dll - comdlg32.dll – shell32.dll
أو انظر ملف WinIce.Dat الي كنت وضعته في مرافق سابق إدا كنت قد حملته.
يمكنك مشاهدة المثال الآخر لبرنامج SpeedrXp في هدا المنتدى.
أتمنى أن هده المرة سيشتغل الكل حتى يمكنك أن تتدوق حلاوة سوفتايس وإلى اللقاء.
حين تكتب MessageBox فقط هي تقبل لأنها شغالة ByDefault .

ahmedbna 24-06-2003 11:35 AM

اخيرا عرفت ما هو خطئى
 
السلام عليكم من جديد
الى الأخ chik
بعد حوالى نصف ساعة تقريبا من قرائة اخر كتابة كتبتها لى بخصوص عدم تشغيل messageboxa عرفت ما هو خطئى
- الخطأ اللى كان عندى ليس من عدم تبديل ملف winice بالملف الجديد الذى ارفقته فحسب ، لانى اول شخص حمل الملف من الموقع وقمت بنسخه على الملف الأخر الموجود، وانما كان الخطأ فى ان عندما حملت الوندوز على الكمبيوتر اسميته بأسم win98 وليس windows وكما تعلم اخى الكريم ملف winice المرفق به كل الأوامر على اسم ويندوز ..... يكفى هذا

على فكرة انا من اوائل المتابعين لك فى درسك الجديد عن صنع كراك لبرنامج speed xp من وجهة نظرى فى هذا البرنامج انه يسرع بعض التطبيقات وخاصة الخاصة بالويندوز ولكن البعض الأخر من البرامج سرعته عادية .

وشكرا لك اخى الكريم

chik 24-06-2003 03:18 PM

أنا جد مسرور أنك لقيت الخطء وأنه الآن يمكنك استعمال سوفتايس.
ولنا لقاءات أخرى في مختلف المواضيع.
وأنا دائما رهن الإشارة لمختلف الأسئلات .

ahmedbna 25-06-2003 10:29 AM

اول تجربه تمت بنجاح
 
الى chik
اجريت تجربتك لعمل سريال نمبر لبرنامج speedxp وقد تمت التجربة بنجاح تام
- اتمنى منك chik مزيد من الدروس حول اوامر سوفتيس
وشكرا

ahmedbna 25-06-2003 05:52 PM

اعتقد بوجود خطأ فى شرح WINPACK32
 
السلام عليكم من الجديد
الى chik
بعد التحية ،،انا اعرف انى اكثرت الأسئلة عليك سامحنى أخى
ولكن لى بعض التعليقات المهمة بخصوص برنامج winpack32 ، قبل كل شيى احب ان انوه الى ان الأصدار الذى معى من برنامج winpack32 بحمل رقم v 1.4
- لقد حاولت بكل الطرق تطبيق دروسك على البرنامج اقصد winpack32 طبعا
- ولكنى اعتقد بوجود بعض الأخطاء هذا ان كان كلامى صحيحا ، والأخطاء هى
1 - ذكرت ان البرنامج سيتوقف عند النقطة 017F :BFF5412E
واعتقد ان الكلام خاطئ بدليل وقوفه عند النقطة 015F:BFF5413A
ولا اريد ان اسرد المزيد علما بأن الأرقام التى ذكرتها غير مطابقة فى الشرح غير مطابقة لواقع البرنامج فكل الموجود بيدأ 015F وليس 017F
- لقد ذكرت لك رقم الأصدار الموجود عندى لربما هو الذى يحعل الأختلاف فى الأرقام .
- ومن ضلك لا تقول لى انى كتبت شيى خطأ ادى الى تغيير الأرقام انا اقصد نفسى وليس انت
- على فكرة وقبل النهاية احب ان اعرفك فقط ان اجيد التعامل بلغة BASIC
استوعب دروسك جيدا ، وكما تعلم اسئلتى هذه ستفيد الجميع .
وشكرا لك CHIK

chik 25-06-2003 07:18 PM

في هدا الوقت كنت سأرسل موضوعا آخر لني وجدت هدا وسأجيبك أولا وسأرسل الموضوع بعد هدا:
يا أخي يجب على النسخ أن تكون كما هي لأن البرمجة قد تكون مختلفة من إعداد إلى آخر.
إن الرقم 017F أو 0150 أو غيره وكما قلت في السابق ليس له أهمية بالنسبة لنا فقد يتغير من حاسوب إلى آخر لكن لن يغير شيئا بالنسبة للكراك.
أما فيما يخص الرقم الآخر BFF5412E ليس عندي هنا سوفتايس لكي أتحقق من دلك , إنما يمكن القول بأن هدا الرقم ليس مهما كمه لأن هدا الرقم يوجد في برنامج للوندوز User32.dll ونحن لن نبدل شيئا في برامج الوندوز.
أخي أنظر إدا وجدت نفس النسخة فأنا لم أتدكر المكان الدي أخدتها منه وإدا كان عندك عنوان التحميل للنسخة اللي عندك ارسلها إلي وسأرى.
ولكي لا أطول في الموضوع سأرسل البقية بعد هدا .

chik 25-06-2003 07:27 PM

إلى الأخ أحمد :
أتمنى أن تكون جربت المثال الأول , لأن فيما يخص الكراك فإجراء باتش أسهل بكثير
من إيجاد السيريال , لأن في غالب الأحيان لكي تجد السيريال يجب أن تدخل
إلى وسط البرنامج وقراءته حتى تعرف كيف يعمل السيريال وكل هدا يتم بالطبع
بلغة الأسمبلر ويجب إدن معرفة هده اللغة.
إدا أنصحك أن تعود إلى SpeederXp وحاول هده المرة أن تعمل له باتش يعني
نفرض أن الوقت انتهى وحاول تشغيله بواسطة سوفتايس. الأمر سهلا جدا فكمثال
الباتش الدي رأيناه في المثال الأول فالأمر يتطلب تخطي MessageBoxA
وهدا المثال سوف يعرفنا على أشياء أخرى. فمثلا نفرض أنك عرفت بواسطة سوفتايس
كيف وأين ستضع الباتش , لكن حين تفتح البرنامج بواسطة أحد برامج الهيكس
فإنك لن تعثر على المكان الدي تريد تغييره لأن البرنامج كما نلاحظ هو صغير الحجم
لكن في الحقيقة فهو Comressed إد هناك عدة برامج تقوم بظغط البرامج exe
وبرنامجنا هدا مضغط ببرنامج يسمى UPX يمكنك تحميله النسخة 120 أو 140 للوندوز
ولاستعماله يجب وضعه في المكان الموجود فيه البرنامج المضغط , نفتح نافدة
دوس تشير الى مكان البرنامج السابق ونكتب :
Upx -d file.exe حيث file هو اسم البرنامج.
سأتركك مع هدا لترى كيف تمشى الأمور ولنا عودة إدا ما كانت هناك مشاكل.
في المرة القادمة يمكن أن نرى كيف نصنع كراك وأعني هنا أننا عرفنا بواسطة سوفتايس مادا يجب فعله من أجل الكراك وكيف نبرمج برنامجا ليقوم بكل هدا أوتوماتيكيا. إلا أن هدا يتطلب معرفة البرمجة ولحبدا تكون لغة C أو C++ .
وسنقوم بمثال آخر لكراك برنامج Morph_Man وقد أتى به أحد الإخوة في هدا المنتدى
تحت عنوان : برنامج لتغيير ملامح الوجه وهو كدلك من بين البرامج السهلة كراكها.
ويمكن أن أعطيكم بعض البداية . نرى أنه في البداية يعطينا نافدة ليعلمنا بأن البرنامج شيروير وأن وقتنا محدد إلى 15 يوما إلى آخره . ولكي نبدل شيئا ما , فهده المرة فإن هده النافدة ليست من نوع MessageBox وإنما هي من نوع DialogBox . هناك عدة API لهدا النوع ومن بينهم :DialogBoxParamA -
CreateDialogIndirectParamA وفي مثالنا هدا يمكننا استعمال :
BPX CreateDialogIndirectParamA فالكراك يستوجب منا تخطي هده المرحلة فقط.
ولكي لا أطيل عليكم وأترككم تجربون هدا أقول لكم إلى اللقاء وسنرى كيف يمكن أن نفعل هدا.

chik 27-06-2003 08:30 PM

مثال آخر ل :Morph_Man
 
الآن وكما قلت سابقا سنقوم بكراك Morph_Man الدي أتى به أحد الإخوة في هدا المنتدى تحت عنوان تغيير ملامح الوجه .

[فقط الاعضاء المسجلين هم من يمكنهم رؤية الروابط. اضغط هنا للتسجيل]

وحين ننصب البرنامج يكون عندنا mman.exe و vman.exe سنتكلف بالبرنامج الأول والثاني فهوو شبيه له.
حين نشغل البرنامج تفتح نافدة البرنامج ومعها نافدة أخرى تنبهنا كم بقي لنا من الوقت لاستعمال هدا البرنامج . وكما قلت سابقا , هده المرة فإن هده النافدة ليست من نوع MessageBox وإنما هي من نوع DialogBox . لكي نتمكن أن نقف عند هده النافدة يجب أن نعرف اسم API التي تعطينا دلك ومن بينها DialogBoxParamA و CreateDialogIndirectParamA . ويمكن إدا كنا لا نعرف ما نختار أن نكتبهم كلهم ونرى أين ستقف سوفتايس .وفي مثالنا هدا سنكتب : BPX CreateDialogIndirectParamA طبعا بعد CTRL+D حتى تفتح لنا نافدة سوفتايس.
بعد هدا نشغل برنامجنا mman.exe ونرى أن سفتايس قد توقفت بالفعل عند CreatedialogIndirectParamA ونرى في الأسفل وباللون الأخضر user32 هدا يعني أننا موجودون في user32.dll فهنا ليس عندنا ما نفعله هناك لأننا لا نريد أن نغير شيئا في مكتبات الوندوز إدن نضغط F12 وقبل أن نستمر دعنا نتحدث شيئا ما عن F12 .سأفسرها بمقارنة مع البازيك . نفرض أنه عندنا برنامج كالتالي:
Instruction1
Call prog1
Instuction2
وفي مكان ما من البرنامج عندنا السبروتين prog1
Sub prog1
Instruction_prog1
Instruction_prog2
....
return
هادا يعني أن الكمبيوتر سيقوم بالعملية Instruction1 بعد دلك يدهب إلى call prog1 في هده الحالة يدهب إلى sub prog1 ينجز ما ينجز هناك وحين يصل إلى return يرجع إلى ما بعد call أي إلى Instruction2 في مثالنا. فإدا كنا مثلا في وسط السبروتين وضغطنا F12 فإن سوفتايس تقوم ما تبقى في السيبروتين وترجعنا إلى Instruction2 وبخلاصة فإن F12 تخرجنا من Subroutine .
حين نضغط على F10 فإننا نقوم بتشغيل البرنامج خطوة بخطوة مثلا إدا كنا فوق call prog1 ووضغطنا F10 فالبرنامج سيقوم بمهمته وويدهب بنا إلى Instruction2 لكن مادا إدا كنا نريد أن ندخل وسط السبروتين وننجزه خطوة خطوة هو كدلك, فهناك F8 تمكننا بهدا فإدا كنا فووق call وضغطنا F8 فسندهب إلى Instruction_prog1 ’ وأتمنى أن تفيدكم هده المعلومات.
نرجع الآن إلى حيث كنا فبعد F12 السابق نجد أنفسنا في MFC42 دائما باللون الأخضر.ف MFC42.DLL هي يعتمد عليها البرامج التي تستخدم MFC(Microsoft Fundation Class) فإدن نحن لا نريد تغيير هده المكتبة لدى دعنا نخرج منها , إدن F12 هده المرة تظهر لنا النافدة المشؤومة ننقر OK وهنا ندخل أخيرا في برنامجنا mman .
0041BE8F CMP EAX , 01
فهنا نقارن eax مع 1 إدا كانت eax=1 نكون قد نقرنا OK .هنا كل ما يدور بالنافدة التي لا تهمنا إدن مرة أخرى F12 .ونجد:
41c377 call 41BE40
41c37c Add esp,0c <----------
41c37f cmp eax,ebp
يمكن أن نقرأ هده الأشياء كاتالي: كنا في النافدة المشؤومة وضغطنا F12 وها نحن وراء call حيث يمكن أن نقول أن هدا call هو المسؤول على تلك النافدة مادا لو نتجنب داك call دعنا إدن نضع نقطة توقف عليه ننقر فوقه و F9 و F5 ونعيد تشغيل البرنامج.
هنا سنقف عند call ونحن نريد أن نتجنبه إدن EIP في أعلى النافدة ونبدل 7 الأخيرة ب C ليصبح EIP=41C37C بعد هدا F5 لنرى أن البرامج اشتغل بدون نافدة إضافية.لكي نجرب هل نجحنا فعلا في مهمتنا نزيد الوقت في الكمبيوتر عام مثلا , نشغل البرنامج عادي حتى نتأكد أنه لم يشتغل ونجرب ثانية باستعمال طريقتنا هده لنتأكد أنه شغال.
وإدا أردنا الكراك على طول نفتح mman.exe في برنامج الهيكس ندهب إلى OFFSET 1C377 وونبدل الخمس بايت :
E8 – C4 – FA – FF – FF ربما مكان E8 نجد CC فالأصل هو E8 لكن سوفتليس قد يحولها إلى CC إدا كانت هناك نقطة توقف قلت نبدل الخمس بايت ب 5 مرات 90 لتكون : 90-90-90-90-90 . ف 90 في الأسمبلر تعني NOP No Operation يعني أن الحاسوب لن يفعل شيئا واخترنا 5 مرات لنقع في 41c37c وهي Instruction التي تلي call أو لأن call تنجز في 5 بايت.
فلن أطول عليكم أكثر من هدا ويمكنكم تجريب نفس الشيء على البرنامج الآخر المصاحب معه vman.
وإلى اللقاء.

chik 27-06-2003 09:40 PM

كراك ل :Hex Workshop V 4.1
 
السلام عليكم من جديد ,
سنقوم بإنجاز باتش جديد وهده المرة للبرنامج Hex Workshop 4.1
نثبت البرنامج , كالعادة نزيد في الوقت ونجرب البرنامج حتى نتأكد بأن البرنامج لم يعد شغالا في هده الحالة يعطينا 3 خيرات , إما أن ندخل رقم التسجيل أو نشتري الرقم أو نغادر.نغادر ولنا معه عودة.
CTRL +D حتى تضهر نافدة سوفتايس ونضع نقطة التوقف التالية:
BPX CreateDialogIndirectParamA
F5 لتغيب النافدة ونعيد تشغيل البرنامج. لن أعيد التفاصيل التي أكون قد جئت بها في الكتابات الفائتة.
تظهر سوفتايس عند النقطة المختارة . F12 لنصل إلى BpsRegWd انظر اللون الأخضر. مرة أخرى F12 لتظهر لنا النافدة , ننقر Cancel ونضغط مرتين F12 حتى نصل إلى برنامجنا hworks32 حيث نجد شيئا كالتالي:

457B27 jz 457B31
[457B29 push dword [esp + 08
457B2D call eax
457B2F mov esi ,eax <-------------
هنا يمكن أن نقول أن call eax هو الدي يعطينا النافدة ونرى في 457B27 هناك jz 457B31 .يعني لو يتم القفز هنا فسوف لن نمر على call وربما نتجنب النافدة , لن نخسر شيئا دعنا نجرب. نضع نقطة توقف فوق jz , نضغط F5 ونعيد التشغيل.
نتوقف الآن عند هده النقطة ونغير EIP ليصبح 457B31 و F5 .
نرى أننا فعلا تجنبنا النافدة الأولى وكل النوافد لأن البرنامج لم يشتغل.
نعيد مرة أخرى وعندما نغير EIP=457B31 نضغط F12 مرات متتابعة ونحسب كم مرة ضغطنا حتى تغيب نافدة البرنامج من وراء نافدة سوفتايس.نلاحظ أنه في المرة الرابعة تغيب نافدة برنامجنا.
نعاود مرة أخرى من جديد مثل المرة السابقة إلا أن هده المرة نضغط 3 مرات فقط على F12 وتكون الحالة كالتالي:
4E2C61 test eax,eax
4E2C63 jnz 4E2C7A
4E2C65 mov ecx,[esi+1c]
4E2C68 test ecx,ecx
4E2C6A jz 4E2C71
4E2C6C mov eax,[ecx]
4E2C6E call [eax + 58]
هنا نشغل البرنامج خطوة خطوة بالضغط على F10 ونلاحظ متى تغيب نافدة البرنامج . نرى أنه حين نصل إلى 4E2C6E ونضغط F10 هنا تغيب هده النافدة , يمكن القول إدن أن call هو المسؤول عن دلك . كالعادة نرى هل بإمكاننا تجنب هدا call .نرى قبل هدا أن jz و jnz الفوق يمكنان دلك. لإختيار أي منهما , نجرب الإثنين. نضع نقطة توقف في 4E2C61 .نعيد التشغيل كالسابق حتى نصل إلى هده النقطة ,نتمشى ب F10 حتى نصل إلى 4E2C6A هنا نرغم البرنامج على القفز إلى 4E2C71 ودلك بتغيير EIP و F5 لكن لم ننجح في اختيارنا.
نعيد نفس الشيء مع 4E2C63 ونلاحظ هده المرة أن البرنامج اشتغل.
إدا أردنا أن نزيد شيئا من الدقة , فحين يقف البنامج في النقطة الأولى 457B27 ونبدل EIP نضغط على F12 لنصل إلى 41CDD5 وكالصابق قبله يوجد call النافدة وفي 41CDC6 هناك jnz 41CDEC الدي يبعدنا عن call وفي هده الحالة لن ندخل النافدة لا من قريب ولا من بعيد.
في الملخص يجب على البرنامج أن يقفز في الحالتين:
41CDC6 jnz 41CDEC وفي 4E2C63 jnz 4E2C7A .
من أجل الكراك يجب تبديل القفز الضرفي jnz بالقفز المطلق jmp .
لفعل دلك نفتح برنامجنا في برنامج الهيكس , ندهب إلى offset E2C63وكدلك offset 1CDC6 وفي كلتا الحالتين نبدل الرقم 75 ب EB ف 75 هو رمز jnz فيما EB هو رمز jmp .
أتمنى أن يزيدكم هدا إفادة وأنا في انتظار اقتراحاتكم وآرائكم.

إدا كان عندكم الإصدار V3.11 يمكنكم اتباع نفس الشيء لكن طبعا الأرقام ستكون مختلفة. فمثلا عوض الأرقام الأخيرة 1CDC6 و E2C63 تكون الأرقام التالية 14EC5 و 9A7EF .

chik 27-06-2003 10:46 PM

مثال لصنع الكراك بالبازيك
 
1 مرفق
سنقوم ببرمجة برنامج يقوم بكراك برنامج ما. وسنقوم بمثال Hex Workshop V4.1 .
الطريقة المتبعة هي:
- فتح البرنامج
- الدهاب إلى Offset الدي نريده
- قراءة البايت اللي هناك لنتأكج من صحته
- إدا كان كدلك نكتب البايت الجديد
- نغلق الملف
- نغادر.
سأقوم في هدا المثال ببرمجة هدا بالبازيك إلا أنني شخصيا لا أفضل هدا وأفضل أن يكون ب C أو C++ .لأن البازيك إدا أردت مثلا أن ترسل الكراك فيجب على الشخص أن يكون عنده أدوات البازيك أو يجب أن نرسل كل المكتباب اللازمة مما يطول البرنامج.
تجدون في المرافق كل الملفات لهادا مكتوبة ب Visual Basic 6 .
لتشغيل الملف exe وكما قلت سابقا يجب أن تكون عندكم المكنبات اللازمة لدلك.
تلاحظون أنني زدت 1 في Offset دلك لأن هدا الأخير يبدأ من الصفر والبازيك يبدأ ب 1 .

الجدار الناري 28-06-2003 03:00 PM

جزاكم الله خيرا

ahmedbna 30-06-2003 09:39 AM

مثال لصنع سريال لبرنامج speedxp
 
هذ الشرح مقدم من chik
اردت ان ارفقة حتى يكون الموضوع متكامل ومتتالى،اقصد طبعا موضوع كيف اصنع كراك من البداية

سنقوم في هده الحصة بإنجاز كراك لبرنامج SpeederXp الدي أتى به الأخ Prince2088 أنظر العنوان : برنامج يخلي جهازك صاروخ ... في نفس هدا الدرب . أنا لن أتحدث هنا على ما يقوم به البرنامج وإن كان فعلا صاروخ أم لا. سنقوم بكراكه على نوعين سنعطي السيريال والباتش ودائما باستعمال سوفتايس.
ثبت البرنامج وافتح نافدة التسجيل.
- سترى هناك حقلان حقل للإسم وآخر للسيريال
- ادخل الإسم مثلا hadibadi
- ادخل أي سيريال تريد مثلا 112233 واضغط Enter إدا كنت محضوضا فستكون الأمور تماما ولكن نحن لا نريد أن نلجأ إلى الحظ.
- سنرى إندار يقول أن الرقم غير صحيح. هيا إلى العمل إدن
- CTRL + D لنفتح نافدة سوفتايس ونكتب بعد دلك :
BPX MessageBoxA
لنضع نقطة توقف عند الإندار F5 ونعاود الكر من جديد نرجع إلى نافدة التسجيل, نترك الإسم والسيريال كما كانا و Enter
- هنا سوفتايس سيقف قبل الإندار F12 سيضهر الإندار وننقر هدا الإندار.
- سوفتايس سيرجع من جديد ونضغط(2) مرتين على F12 ليصلنا إلى الداكرة رقم :004030EA
- نصعد الشاشة شيئا ما إلى أعلى حتى يظهر لنا الرقم : 0040306B
- ننقر على هدا الرقم لكي نجعل Cursor فوقه
- نضغط F9 لكي نجعل نقطة توقف في هدا العنوان –سيرجع لونه أزرق –
- نضغط F5 لنعاود من جديد وهده ستكون المرة الأخيرة
- ها قد عدنا ثانية إلى نافدة التسجيل مثل المرة الأولى نترك الأشياء كما كانت ونضغط Enter
- سوفتايس سيقف هده المرة عند العنوان أعلاه : 0040306B
- هنا ننقر باليمين فوق EDX أعلى الشاشة ونختار Display أو نكتب d edx
- مادا تشاهد في شاشة Display رقم السيريال :a2c940487e51815e
أو تشاهدون رقما آخر إدا أدخلتم إسم آخر
إدا لم تكن عندكم نافدة Display اكتبوا wd أو اضغطوا ALT + F2 حتى تضهر عندكم في النافدة الثانية من الأعلى و wd تعني window-display
- F5 مرت أخرى لنرجع من جديد إلى نافدة التسجيل وندخل هده المرة السيريال الدي وجدناه وسيشكرنا البرنامج هده المرة. نوقف SpeederXp ونشغله من جديد ليظهر لنا أنه فعلا قد تم تسجيله وهو الآن شغال تمام.
يمكنا إنجاز الكراك على شكل باتش ولكن قبل دلك أترك فرصة للهواة ليقوموا ببعض التجارب.

chik 01-07-2003 07:15 PM

مثال لصنع كراك ب : C++
 
1 مرفق
ستجدون في المرفق هنا كل الملفات اللازمة لصنع الكراك ب C++ .
المثال هو كالبازيك السابق تماما . ويمكن الإعتماد على هدا المثال لإنجاز كراك لمثال آخر. إد يمكن مثلا تبديل رقم Offset فقط .هدا كان الأمر يتطلب تبديل 2 بايت مثل هدا المثال. أما إدا كان الأمر غير دلك يمكنكم زيادة أو نقص السطور اللازمة لدلك في البرنامج.
في المرة القادمة يمكن أن نصعب شيئا ما الأمور ودلك بأن نتطرق إلى بعض البرامج المضغطة. فما رأيكم.
إلى اللقاء.

ahmedbna 02-07-2003 12:43 PM

الأخ chik انا لى رأى أخر
 
السلام عليكم

ما رأيك يا chik لو اعطيتنا دروس فى لغة الأسمبلر assembler
حيث انى بصراحة اريد معرفة هذه اللغة

chik 02-07-2003 10:48 PM

يا أخي أنا ما عندي مانع من أن أقتسم المعرفة مع باقي الإخوان حتى نفيد ونستفيد.
إن لغة الأسمبلر وكما يحكم عليها أغلبية الناس تبدو صعبة مقارنة مع باقي اللغات إنما حين نتعرف عليها فهي مثل اللغات الأخرى لها قوانينها ومبادئها.الفرق يبدو لي أنه مثلا في البازيك يمكن أن تنجز برنامجا رائعا بدون ما تعرف كيف يدور برنامجك هدا وكيف يشغل الداكرة إلخ... أما في الأسمبلر ففي غالب الأحيان أنت الدي ستقوم بكل هدا. لدا يجب معرفة بعض المبادئ الأساسية لكل هدا.
أني أود أن أهيئ درسا لهدا , لكن صدقني وأنا لا أبخل عن أحد أنه ليس من السهل تهيئ درس أو على الأقل أنا لا أجيد تهيئ الدروس وأنا أحب سؤالا وأجاوب السؤال. إنما سأحاول رغم أنني لا أعرف من أين أبدأ لأنني لا أعرف ما معرفتك لهده اللغة.
هنا سأعطي بعض المعلومات العامة وإدا كان شيئ ما غير مفهوم أنا أنتظر الأسئلة حتى تسهل الأمور.
إن الأسمبلر وكباقي اللغات يمكن أن نقسمه إلى قسمين : 16 أو 32 بايت أو نقول مثلا البرمجة تحت DOS أو وندوز. فإدا كنا نريد البرمجة وندوز فأنا أنصح ولكن ليس ضروري أن نبدأ بلغة س++ لأن هاتان الغتان تتشابهان كثيرا في بناء الهيكل أو لبرمجة نافدة مثلا رغم أن اللغة غير متشابهة.
لكي نبدا البرمجة يجب أن نتوفر على compilator لهده اللغة حتى يتمكن لنا أن نصنع ملف exe للبرنامج ASM الدي نكون قد كتبناه. وهناك عدة من compilator فهناك مثلا masm tasm nasm فأنا شخصيا أستعمل Masm6 ل 16 بايت وأستعمل masm32 طبعا ل32 بايت.وأنا أنصحكم أولا أن تقوموا بتحميل هده البرامج فهي موجودة في عدة مواقع يكفي أن نجري بحثا بسيطا.
أظن أن بداية الأسمبلر تتطلب أولا معرفة registers سنسميهم الرجستر.ويمكن أن نقول أن هده الأخيرة هي نوع من الداكرة الخاصة ب Processor يستعملها لأغراضه الشخصية أي للقيام ولإنجاز كل العمليات التي يقوم بها.وهده الرجستر يمكن أن نقسمها إلى قسمين : رجستر Segment و رجستر Offset وهنا سأفتح قوسا لتوضيح هده الأمور.
نعرف أن في 16 بايت الرقم الأكبر الدي يمكن أن نصنعه هو 2 أس 15 أو الرقم FFFF في القاعدة 16 وهنا أفترض أن القارء عنده معلومات عن قاعدة الأعداد 10 طبعا 2 و 16. فالعدد FFFF يعطينا تقريبا 64 كيلو بايت مثلا في الداكرة فهنا نلاحظ أن هدا العدد ليس كافيا افترض أنه عندك ميغا بايت مثلا. لحل هدا المشكل قام الخبراء بتقسيم الداكرة إلى أجزاء وكل جزء يمكنه أن يحوي 64 كيلو وكل جزء سنسميه segment وكمثال لهدا نفترض أنك لا تعرف تعد الأرقام إلا حد 100 وعنك سيارة تقوم بسباق وتريد أن تعطينا كل مرة المسافة التي قطعتها. فحين تكون في الكلمتر 85 ستقول 0:85 في الكلمتر 244 تقول 02:44 إلخ... فهكدا الداكرة نكتبها مثل هده الحالة : Offset : Segment
-هنا انقلبت الكتابة Segment هو الأول-
ونعود إلى الرجستر فهي كالتالي : IP AX BX CX DX SP BP SI DI ورجستر السكمنت وهي
DS ES SS CS .
AX Accumulator BX base CX counter DX data SP stack pointer IP index BP Base pointer Si source di destination .
هده هي التسميات وسنرى مادا تعني حين نقوم بإجراء الأمثلة. أما السكمنت فهي :
Ds data segment es extra segment ss stack segment cs code segment
ف CS segment يتمشى مع IP ليعطينا رقم الداكرة التي وصل إليها البرنامج وفي غالب الأحيان لا نحتاج إلى تغيير هدا.
SS تتمشى مع SP ليعطينا الستاك وهده يمكن أن نقول أنها جزء من الداكرة يقوم البرنامج بتخزين المعطيات فيها فمثلا نقول أنه عندنا عدد من المعطيات اكبر من عدد الرجستر فكيف سيقوم البروسسور بالتدكر بكل هدا إدن سيلجأ الى تخزين الفائض في الستاك ويلجؤ عنده عند الحاجة.هدا باختصار.
والباقي قد يستعمل لعدة أشياء مثل نقل محتوى الداكرة من مكان إلى آخر.
وهناك رجستر آخر وهو من نوع خاص يسمى Flag أو الراية وهدا الأخير يعطينا حالة البرسسور أو حالة الإنجاز الأخير لكي لا نعقد الأمور سنقول مثلا أن البرسسور قام بعملية أعطتنا نتيجة صفر إدن الراية ستقوم بإخبارنا بدلك مثلا تلوح لنا راية الصفر فمثلا حين نكتب JZ فنحن نقوم باختبار هده الراية.
ويمكن القول أن كل الرجستر الدي دكرناها هي سعتها 16 بايت. وبعض رجستر الأفسيت يمكن أن تقسم إلى رجستر 8 بايت فمثلا AX هي مكونة AH و AL : الأولى High والثانية LOW.نفترض أن AX=1234 بالهكس في هده الحالة AH=12 و AL=34 إدا بدلنا AL=00 على انفراد فسوف نبدل أوتوماتيكيا AX حيث سيصبح AX=1200 نفس الشئ بالنسبة ل BX CX DX.
بالنسبة للتعليمات يمكن أن نبدا بلأكثر استعمالا وهي MOV وهي تمكن من وضع معطيات ما في رجستر أو في داكرة ما ولها عدة كتابات مثل :
MOV AX,5 نضع العدد 5 في الجستر AX ليصبح AX=5 .
MOV AX,BX نضع محتوى BX في AX الأول لا يتغير .
Mov [ax],bx هده تضع لنا مقدار BX في الداكرة المشار إليها في AX هده بخلاصة لكن بعض الأحيان تتطلب توضيحات إضافية يمكن التطرق إليها مستقبلا.
Mov ax,[bx] هي عكس الأولى ما يوجد في الدكرة BX يوضع في ax .

فيما يخص 32 بايت فالرجسترات تكون كما سبق ونضيف إليها E مثل EAX EBX ECX .. وكالسابق يمكن تقسيمها إلى AX ثم إلى AH AL وهنا في غالب الأحيان لا نحتاج لرجسترات السكمنت.
فقبل أن تحملوا MASM سنقوم بمثال بسيط وبواسطة سوفتايس.
افتحوا Symbol Loader لسوفتايس , افتحوا الملف Notepad.exe بعد دلك انقروا Load لا يهمنا الخطأ ونتابع ونجاوب Yes لسفتايس بعد كل هدا ستقف سفتايس عند 4010A8 نسجل هدا الرقم في ورقة ما بعد هدا نكتب d 410100 ونتأكد من أن نافدة Diplay تشير إلى أصفار نكتب u 410100 هدا يعني Unassemble الداكرة التي أعطيناها أو أنه سيحول معطيات هده الداكرة إلى Assembler لا نهتم ما دا نرى وهده المرحلة ليست ضرورية. بعد هدا نكتب a 410100 ويعني أننا سنكتب بلأسمبلر في الداكرة المطلوبة حيث هنا يمكن أن نبرمج وسوفتايس يحول أوتوماتيكيا برنامجنا نكتب مثلا :
mov eax,12
mov ebx,410130
mov [ebx],eax
حين ننتهي نضغط ESC .
بعد هدا نحول EIP إلى برنامجنا أي 410100 وننجزه خطوة خطوة ب F10 وفي نفس الوقت نلاحظ مادا يقع في الرجسترات وفي الداكرة 410130 وبهده الطريقة يمكنكم تجربة عدة أشياء. حين ننتهي نعيد EIP إلى الرقم الدي سجلناه و F5 لنشغل Notepad ونخرج وهده طريقة لبعض الكراكات.
يمكن أن نجرب البرنامج الآتي مثلا :
في نفس الضروف السابقة نكتب :
Mov eax,1
Mov ebx,410130
Mov [ebx],eax
Inc eax
Cmp eax,8
Jnz 41010A
Mov eax,0
Mov [ebx],eax
Jmp 4010AA
هدا مثل الأول وزدنا هنا inc وهي تعني Increment أي تزيد واحد هنا ل EAX وكدلك cmp eax,8 وهدا يعني نقارن EAX مع العدد 8 حين تكون EAX=8 فإن رجستر الراية ينبه بدالك ونراه في سفتايس ب Z يرجع لونه أزرق في نافدة الرجستر. إدن حين يختلف EAX عن 8 يرجع البرنامج إلى الداكرة 41010A ويعيد إنجاز الأمور وحين تكون 8 يرجع الداكرة 410130 إلى الصفر ويدهب البرنامج إلى 4010AA وهده هي التي سجلناها في البداية إدا قمنا هنا ب F5 سنشغل Notepad .
يمكنكم القيام بتجاربكم الخاصة وأحسن تعليم هي التجربة.
سأكتفي بهدا اليوم وأتمنى أني كنت شيئا ما واضحا لأني لم أهيئ شيئا.
وأنصحكم أن تجدوا كتابا لهده البرمجة وإدا كنتم تعرفون الإنجليزية يمكنكم تحميل عدة دروس تكون أوضح مما أقول وأضن أن أحسن شيء هو الكتاب إدا كان في الممكن.
وأنا رهن الإشارة لأي سؤال وأتمنى أن تفيدكم هده السطور.
وللبرمجة هناك بعض الأدوات من الأفضل الحصول عليها:
لائحة Interruptions لأن البرمجة في الدوس تقوم على هدا النحو ويجب إدن معرفة ارقام Interruptions ومادا تتطلب كل واحدة .
تعريف API وكيف تبرمج إدا كنا نريد برمجة وندوز. وهنا إدا كان عندنا MSDN فهدا يكفي.
وإلى اللقاء ومع آرائكم.

ahmedbna 02-07-2003 11:56 PM

الأخ chik
 
سلامى الكبير لك
انا اعرف انى اكثر شخص ارهقتك بأسئلتى الكثيرة
- معذرة اخى سرف اعدل عن كلامى هذه المرة لان الحديث عن الأسمبلر فى الوقت الحالى سيبدو امرا صعبا
وحتى لا نتوه عن موضوعنا الأصلى ، اطلب منك اخى الكريم بأستكمال حديثك عن الكراك ، وعن الموضوع القادم اقصد موضوع البرامج المضغوطة الذى ذكرته
وان شاءالله عندما نتخلص من موضوع الكراك ، نبدأ بعد ذلك فى فتح باب جديد يتكلم حينئذن عن الأسمبلر
على فكة chik انا من متابعينك جيدا واى ملف تطرحه ، او برنامج تذكرة اوجده لنفسى فى نفس اليوم
ولك ترحيبى ولن اطيل عليك
ahmedbna
egypt

chik 03-07-2003 10:55 PM

إلى الأخ أحمد حول الملف الدي أرسلت إلي.
إن هدا الملف ليس هو الملف الأصلي , إد هو مغير من طرف شخص ما ويدعي عدم قدرة كراك ملفه أو على الأقل من الصعب جدا. إن هدا يكون إما للتباهي أو لتجربة الشخص الدي سيقوم بالكراك أو لتحديه. وأتمنى أن تكون أخدت هدا الملف عن طريق الصدفة وأن لا تكون لأسباب أخرى.
إنما سأحاول تفسير كراك هدا الملف رغم أني أكره التحدي فالكراك بالنسبة لي هواية وكثير هي برامج كركتها ولم أستعملها قط.
فلنبدا بإدن الله.
حين ثبت البرنامج ولم أكن أعلم ما فيه ظننت أنه كالبقية واتبعت نفس الأسلوب الأصلي . فكيت مشكل الوقت وشغلت البرنامج , حين هنا لا شئ جديد لكن حين أريد فتح ملف ما تخرج نافدة لتقول بأنك قد فزت بالمرحلة السهلة ولكن المعركة الحقيقية ستبدأ الآن ويتحداك إلى غير دلك , بعد هدا تقع أخطاء في البرنامج ويقفل.
بعد دراسة أولية للبرنامج يبدو أن شخصنا زرع فيه عدة ألغام من نوع Exceptions لكن كل هدا ليس بالمشكل . فلربح معركة ما إما أن ندخلها بالعتاد وقد تدوم وقتا وإما أن نتجنبها. وهنا سأختار الطريقة الثانية لأن رغم كثرة الألغام المزروعة يمكن أن نسلك طريقا آخر ونتجنب المشاكل.
سأعطي أولا بعض التوضيحات:
نثبت البرنامج إدا كان مثبتا من قبل نمسح الملفات ونعيد التثبيت . بعد هدا نسجل في ورقة أو في الدماغ التاريخ وأعني اليوم , الشهر والسنة . لأن البرنامج حين نثبته فهو سيقوم بتسجيل تاريخ التثبيت في الملف exe ليقوم بالمقارنة بعد دلك وأنا شخصيا أعتبر هده الطريقة غير احترافية. نزيد كالعادة الوقت في الكمبيوتر سنة مثلا وهنا حين نشعل البرنامج لا يعمل إدن هنا كالعادة نلجأ إلى الطريق العادي وأنا جربته أولا لكن هدا لن يوصلنا إنما يمكنكم أيضا البداية بهدا.
هنا دعنا نفكر قليلا فالبرنامج في وقت ما إنه سيقارن وقت الحاسوب مع وقت التثبيت الدي سبق وأن سجله. فهدا سيدفعنا إلى معرفة API المسؤولة على دلك وهي : GetLocalTime هده تعطي وقت الكمبيوتر الكامل , وأظن أن الآن الأمور اتضحت.
في سفتايس نكتب : bpx getlocaltime ونشغل البرنامج وستقف سفتايس عند ما طلبناه . F12 وبعد هدا يجب أن نكون في winpack لأن GetLocalTime عليها طلب كبير من عدة برامج أخرى . فإدا لم يكن الأمر كدلك F5 ونعاود حتى نصل Winpack وفي هده الحلة ستكون عندنا :
488AD8 Call getlocaltime فهده ستعطينا الوقت الكامل للحاسوب والدي يهمنا نحن هو اليوم الشهر والسنة. من هنا نتمشى بالخطوة بواسطة F10 حين نصل إلى :488AFC mov ax,[aes+12] هده ستعطينا اليوم الحالي في ax بعد F10 نلاحظ أنه AX قد أخد فعلا عدد اليوم نفس الشئ في الداكرة 488B04 mov ax,[esp+12] تعطينا الشهر وفي 488B0A السنة في AX . 7D3 بالهكس بالنسبة 2003 مثلا .
هنا ستظهر الخطة التي سنتبعها حين يطلب البرنامج الوقت الحالي سنأخد زمام الأمور ونعطيه الوقت الدي سجلناه في البداية. هكدا سيشعر البرنامج وكأنه لا زال دائما في يومه الأول من التثبيت ويبقى شغالا على طول. نزيل نقطة التقف الأولى ونضع نقطة في 488Afc المكان الدي سيعطينا اليوم ونعاود التشغيل. حين يتوقف عند هده النقطة الأخيرة نكتب ما يلي:
A 488afc
Mov ax,day dayهو يوم التثبيت الدي سجلناه من قبل مثلا 3 إدا كان اليوم.
Nop هده لن تفعل شيء لكنها ستحافظ على بقاء البرنامج على هيكله.
نكتب نفس الشء في 488B0A بتغيير day ب month اي الشهر.
في 488B0A :
a 488B0A
mov eax,7D3 . ف 7D3 قلنا هي 2003 أو غيرها إدا لم يكن لدينا نفس التاريخ.
Nop
Nop
Nop
Nop
نضغط ESC بعد الإنتهاء من كل كتابة.ونسجل الكود الدي أعطاه لنا سفتايس.
هدا يعني أنه كلما طلب الوقت سيكون الجواب هو day month year الدي أعطيناه.
بعد هدا BD نقطة توقفنا وF5 لتشغيل البرنامج وهنا نرى البرنامج اشتغل.
إدا أردنا أن نكرك البرنامج نفتحه في برنامج الهيكس ندهب إلى Offset 87EFC ونبدل الخمس بايت الأصلية :
66 – 8B – 44 – 24 –12 ب : 66 –B8 –03 –00 –90 علما أن 03 هو اليوم ويمكن تبديله بيومك.
-هنا الأرقام انقلبت عند الكتابة 66 هي الأولى في الحلتين بعد دلك الترتيب صحيح.66 ثم ب8 ثم 03 ثم 00 ثم 90 كدلك الآخر.
في 87F04 نبدل 66-8b-44-24-12 ب 66-b8-07-00-90 07 هو شهر التثبيت.
-هنا نفس الملاحضة بالنسبة ل66
في 87F0A نبدل 9 بايت ب : b8-d3-07-00-00-90-90-90-90 هنا d3-07 هي السنة 7d3 لكن يجب أن تكتب مقلوبة نبدأ ب LOW ثم High و 90 هو كود NOP.وهده البايت هي التي أعطاهانا سفتايس حين بدلنا البرنامج الأصلي وأدخلنا mov ax,day إلى آخره.
وهاهو الكراك رغم ما وقع في البرنامج هناك كثير من الأحيان حل بسيط.
بعد هدا يمكن أن نزيد في كراكنا مثلا أن نزيل النافدة التي تندرنا بالشروير إلا أن هدا بسيط وهو مثل المثال السابق.
هناك طرق أخرى لكراك هدا حيث يمكن أن نقرأ كود البرنامج إلا أن هدا يتطلب شيئا من الوقت.
إلى اللقاء.


الساعة الآن 01:10 AM.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
adv helm by : llssll