نقاط : 80196 تاريخ التسجيل : 01/01/1970
| موضوع: جميع الكراكات لجميع البرامج الإثنين أغسطس 16, 2010 3:51 pm | |
| بسم اللـه الرحمن الرحيم نظرا لكثرة السؤال عن ماهية الكراك وكيفية عمله وهل بأمكان اي شخص صنع كراك فسوف اقوم هنا بأذن الله بشرح كل ذلك وارجو من الله ان يوفقني في تقديم صوره كامله وواضحه للجميع .
اولا تعريف الكراك: الكراكنق ( Cracking ) هو تغيير خاصية وظائف برنامج معين من تجريبيه ومحدودة الزمن (30-day trial, 30-uses trial,etc..)الى وظائف كامله ( كأنك اشتريت البرنامج ). ويتم ذلك اما بتغيير النص الأصلي للبرنامج عن طريق (source code ) او سرقة وادخال الرقم التسلسلي للبرنامج عن طريق (key file/registery entry).وفي جميع الحالأت يعتبر الكراكنق عمليه غير قانونيه وقد يحاسب عليها القانون . إذن لو أنّك تنوى أن تكسّر برنامج لا تجيء بعدين وتشتكي بأنّك لم تعرف ان هذا العمل غير قانوني !. والكراكنق ايضا يمكن أن يعمل في كل مكان وبمعنى آخر بعيد عن النت كمثال تستطيع تشفير (bar codes) الموجود على يعض المنتجات المستخدمه في حياتنا العاديه .ولكن هذا ليس موضوعنا الأن . موضوعنا هو كسر حماية البرامج (software cracking).
وقبل ان تبدا في عمل هي شئ يجب ان تعرف ان الكراكنق ليس هاكنق يعني كسر حماية البرامج لا يعتبر من اعمال الهكرز وانما هو علم مستقل بحد ذاته وله خبراء ومتخصصين (يعني مو شغل عيال صغار مثل سب سفن ,,,, الخ ). ----------------- نبداء الأن 1- ماهي المتطلبات اللآزمه لتصبح كراكر ؟ هذا هو اهم سؤال يواجه اي شخص يريد ان يصبح كراكر والأجايه عليه هي اهم نقطه وهي المفتاح الأول لدخول هذا العالم (CRACKERS).
الأجابه: اولا يجب ان تكون ملم باللغه الأنجليزيه . ثانيا يجب ان تكون على درايه كامله بأستخدام جهاز الكمبيوتر . ثالثا يجب ان تكون ملم بلغة التجميع (Assembler)يعني تعرف (jmp, call, mov, cmp, or, xor, int, etc... ). معرفتك باللغات الأخرى جيده ولكن لن تحتاجها كثيرا هنا . رابعا يجب ان يكون لديك ثلاثة ارباع صبر ايوب على الأقل.
2- ما هو (Assembler)؟ هو تغيير (source code) وجعله قابل للتنفيذ على شكل برنامج (EXE)او (com file) مثال هذا البرنامج (Hello world!" ) هنا مكتوب بالسي بلس بلس (C++) Start partial code (c++)
#include <iostream.h>
void main(void) { cout << "Hello world!\n" ;
} End partial code
وهنا مكتوب بلغة (Assembler) Start partial code (assembler)
code segment
assume cs:code, ds:code
org 100h
begin: jmp short main
msg db 13,10,"Hello world!",13,10,"$"
main proc near
mov ah, 09h
mov dx, offset msg
int 21h
exit: mov ax, 4C00h int 21h
maind endpcode ends end begin
End partial code
واكيد الفرق واضح .ولكن اذا عرفة هذه اللغة سوف تجدها سهله عليك .
3- قبل ان تبداء في عمل كراك لأي برنامج يجب ان تسأل نفسك بعض الأسئله مثل : 1- هل هذا البرنامج يملك امكانية التسجيل ؟ 2- هل هذا البرنامج يملك شاشة (a nag screen )؟ 3- ما هي حدود الشيروير (limits of the shareware)؟
وهناك طريقتين للبداء في العمل الأولى استخدام هذا البرنامج (SoftICE) اذا كان البرنامج المراد كسر حمايته يملك امكانية التسجيل . الثانيه استخدام (W32DSM او IDA Pro) دون الأهتمام بأمكانية التسجيل . مثال اذا كان عندك برنامج وتريد كسر حمايته ووجد ان البرنامج به امكانية التسجيل مع مدة محدده 30 يوم بالأظافه الى وجود الشاشه . فماذا ستفعل ؟ عندك اختيارين اما انك تستخدم (SoftICE) وتجد رقم التسجيل او انك تستخدم (W32DSM مع hex-editor) وهذه الطريقه تجعل البرنامج يصدق انه تم التسجيل عن طريق الشركه .
4- سوف اقوم الأن يعمل تجربه وكسر حماية برنامج (Winzip8.0) ولكن قبل البداء سوف اعرض البرامج التي سوف اقوم بأستخدامها ويجب عليك ان تتعرف عليها وطرق استخدامها البرنامج الأول (SoftICE)الأداة الرئيسية للكراكر وبدونها لن تستطيع عمل اي شئ . البرنامج الثاني (W32DASM)وهي الأداه رقم 2 من عدة الشغل وعملها التغيير من EXE file الى 'dead list'. البرنامج الثالث (IDA Pro) هذه هي الأداه الأقوى في عدة المحترفين . البرنامج الرابع (Hex Workshop - Hiew) هذه الأداه لتغيير الEXE بعد الكسر .
باقي العده Regmon: Monitors reads and writes to the Windows registery. Filemon: Monitors reads and writes to files in Windows. Procdump: Used to unpack programs or to dump files from memory to harddisk FrogSICE: Tool used to hide SoftICE from programs that don't like it. Windowse: Little program that displays important information on everything your mouse crosses. It's commonly used to get the handle (a unique hexnumber that identifies every part of a program) of nagscreens. IceDump: SoftICE addon that allows you to dump from memory to harddisk. It's often used for manual unpacking. Smartcheck: debugger especially developed for Visual Basic programs.
الحين نبداء الشغل اولا نقوم بتشغيل برنامج الون زب الغير مسجل (نسخه غير كام) وبعدين نظغط على (Enter registration code) ونكتب اي اسم واي رقم تسجيل وبعدين نظغط على ok الحين نشغل (SoftICE) بالظغط على (CTRL-D) ونكتب (bpx getdlgitemtexta) وبعدين نظغط على enter ونقفل(SoftICE) بالظغط مره ثانيه على (CTRL-D) نظغط على OK راح يطلع (SoftICE)مره ثانيه الحين احنا في (GetDlgItemTextA) نظغط على F12 لننتقل الى Winzip code الحقيقي . نكتب (bc) وبعدها نظغط على enter وبعدين نظغط على (F10) الى ان يظهر لنا شئ مماثل لهذا :00408049 803D28D9470000 cmp byte ptr [0047D928], 00 :00408050 59 pop ecx :00408051 745F je 004080B2 :00408053 803D58D9470000 cmp byte ptr [0047D958], 00 :0040805A 7456 je 004080B2 :0040805C E8EAFAFFFF call 00407B4B [-> This makes the real serial] :00408061 85C0 test eax, eax [-> Test if good serial] :00408063 744D je 004080B2 [-> Jump if valid]
اذا رائينا (call 00407B4B) نظغط على F8 الى ان يظهر لنا هذا الكود :00407C0E 8D85C0FEFFFF lea eax, dword ptr [ebp+FFFFFEC0] :00407C14 50 push eax :00407C15 57 push edi :00407C16 E8AB000000 call 00407CC6 [<-Makes real serial in EAX] :00407C1B 59 pop ecx :00407C1C BE58D94700 mov esi, 0047D958 :00407C21 59 pop ecx :00407C22 8D85C0FEFFFF lea eax, dword ptr [ebp+FFFFFEC0]
الأن نبحث عن (lea eax, dword ptr [ebp+FFFFFEC0] ) ومن ثم نظغط على F10 ونكتب (d eax) والحين راح نشوف رقم التسجيل للبرنامج (مبروك). ------ فيه الطريقه الثانيه واللي هي اصعب شوي ونبدأها بأستخدام (W32DSM and a hex editor) والبرنامج اللي راح نكسر حمايته هو (RegView v1.21a) وهو برنامج معروف وحكوم بمده زمنيه (30 يوم) وعند انتهاء المده تظهر لنا هذه الجمله (Maximum number of trials has been reached! To continue use....). قبل ان نبداء في عمل اي شئ يجب علينا اولا عمل نسخه من (regview.exe) ونسميها (regview.dsm)ومن ثم العمل عليها . الحين نبداء بتشغيل (W32DSM) وفك (regview.dsm) والطريقه هي ان نظغط على (Disassembler) ومن ثم نقوم بأختيار (regview.dsm). ننتظر قليلا حتى ينتهي البرنامج من عملية الفك .ثم نظغط مره اخرى على (Disassembler) وبعدها (Save disassembly textfile). الحين انت تذكر هذه الجمله (Maximum number of trials has been reached! To continue use....). جميل ابحث الأن عن (dead listing)او بلغتنا (التسجيل الميت) سوف ترى شئ مثل هذا ---------------------------Start-of-partial-code----------------------------
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0048D830(C) <- That's the location where u can find a jump to this "beggar off" | :0048D856 6A00 push 00000000 :0048D858 668B0DBCDB4800 mov cx, word ptr [0048DBBC] :0048D85F B202 mov dl, 02
* Possible StringData Ref from Code Obj ->"Maximum number of trials has been " ->"reached! To continue use of this " ->"program, you need to register " ->"now!" ----------------------------End-of-partial-code-----------------------------
ممكن الوضع يلخبط شوي انا عارف بس تأكد لو انك تعرف (basic assembler) ما راح تتلخبط ابد. انظر الأن الى هذا الكود ولاحظ هذا الرمز (0048D830) وهو المكان اللي يتغير فيه وضع البرنامج ليعطيك هذه الرساله (You have to register). الكود
---------------------------Start-of-partial-code---------------------------- * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0048D806(C) <- There's a jump at 48D806 that jumps to this "beggar off" | :0048D816 8D55F0 lea edx, dword ptr [ebp-10] :0048D819 B801000000 mov eax, 00000001 :0048D81E E8BD51F7FF call 004029E0 :0048D823 8B45F0 mov eax, dword ptr [ebp-10]
* Possible StringData Ref from Code Obj ->"try" | :0048D826 BAB8DB4800 mov edx, 0048DBB8 :0048D82B E83066F7FF call 00403E60 :0048D830 7524 jne 0048D856 <- Here is the jump :0048D832 B90CFFFFFF mov ecx, FFFFFF0C
----------------------------End-of-partial-code----------------------------- ممكن تقول الحين " طيب ليش ما نغير الرمز اللي تطلع عنده الرساله ونخلص " شعور جيد لمبتداء ووده يخلص بسرعه لكن حيل المشوار مطول شوي . واللي انت تقول عليه ما راح يغير شئ في الموضوع شوف نظغط الحين على shift+F12 وبعدين يجينا هذا الشكل
---------------------------Start-of-partial-code---------------------------- * Possible StringData Ref from Code Obj ->"CLSID" | :0048D7C4 BAA8DB4800 mov edx, 0048DBA8 :0048D7C9 8B45F8 mov eax, dword ptr [ebp-08] :0048D7CC E85B9CFCFF call 0045742C :0048D7D1 8B1550D34900 mov edx, dword ptr [0049D350] :0048D7D7 8902 mov dword ptr [edx], eax :0048D7D9 A150D34900 mov eax, dword ptr [0049D350] :0048D7DE 81280BFFFFFF sub dword ptr [eax], FFFFFF0B :0048D7E4 A150D34900 mov eax, dword ptr [0049D350] :0048D7E9 81387CF8FFFF cmp dword ptr [eax], FFFFF87C
:0048D7EF 750D jne 0048D7FE <- if registration code in registery is false then check trial uses
:0048D7F1 A104D34900 mov eax, dword ptr [0049D304] :0048D7F6 C60001 mov byte ptr [eax], 01 <- set registered flag!! :0048D7F9 E987020000 jmp 0048DA85
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0048D7EF(C) | :0048D7FE A150D34900 mov eax, dword ptr [0049D350] :0048D803 83381E cmp dword ptr [eax], 0000001E <- compares the amount of uses to the maximum amount of uses. (1E is the hex value for 30!!)
:0048D806 7F0E jg 0048D816 <- if exceeded the 30 trial uses then "beggar off" ----------------------------End-of-partial-code----------------------------- الحين الشئ الوحيد الباقي هو تغيير (jne 0048D7FE) الى لاشئ مرتين (NOP)يعني (=do nothing))
Before cracking: ---------------
:0048D7EF 750D jne 0048D7FE
After cracking: ---------------
:0048D7EF 90 NOP :0048D7F0 90 NOP
الحين انا راح اشرح طريقه الباتش بأستخدام (HIEW) 1- نشوف هذا الكود (0048D7EF ) 2- نلاحظ الرمز الموجود في الزاويه اليمنى تحت في (W32DSM)ونحفظه في ورقه خارجيه 3- نفتح (HIEW) ونفتح معاه (REGVIEW.EXE ) 4- نظغط على F4 وبعدين F3 5- نظغط على F5 ونكتب الرمز اللي حفظناه . 6- F3 ونغير الكود 7- نكتب 90 مرتين 8- نظغط على F9 لحفظ التغييرات اللي عملناها 9- نظغط الحين على (Escape) كأننا ما انتبهنا . وانتهى . ------------------
كان هذا شرح لما يسمى بالبيسك كراكنق (Basic Cracking). قد يكون الشرح باللغه العربيه صعب شوي وممكن انه ما ينفهم ولكن اللي وده اشرح له بالعنكليزي يبلغني وانا تحت امره . تمنياتي ان يستفيد الجميع من هذا الشرح مع مراعات ان الأطلاع على مايسمى (tutorials) والموجوده بكثره في مواقع الكراك قد يفيد كثيرا في شرح مثل هذه الأمور .
وارجو منكم المعذره اذا وجد هناك اي اخطاء لغويه او مطبعيه او نقص في الشرح .
| |
|