هنر هشتم: کرک کردن برنامه
کرک کردن:
خیلی ها کرک کردن رو هنر می دانند. بیایید با این هنر آشنا شویم. خب، برای شروع یک برنامه لازم داریم که رجیستر کد بخواهد یا اینکه مدتی باشه و بعد از اون کار نکنه. خب، بیایید ببینیم چه جوری یه قفل ساده بنویسیم.
البته فقط یه الگوریتم:
 

1: Input Name
2: Input Serial
3: If (function(serial,Number=1)(
4: Print (serial good)
5: Function(GOOD )
6: Else
7: print (selial bad)
8: Function (BAD)
9: Continue …
 

ساده ترین روش برای تغییر برنامه برای اینکه برنامه وقتی سریال غلط وارد میکنیم، وارد قسمت GOOD بشود، چیه؟
0: بریم تو فانکشن چک کردن سریال و اون فانکشن رو تحلیل کنیم: خیلی احمقانه است. چون روش ساده تری هم وجود داره.
1: جای دو تا فانکشن رو عوض کنیم: خیلی احمقانه است، چون روش ساده تری هم وجود داره.
2: فقط لازمه برنامه رو اینجوری تغییر بدیم:
 

If (function(serial,Number=0)
If (function(serial,Number<>1)
 

بهمین راحتی. حالا اگه غلط باشه، کار میکنه. اگه درست باشه، کار نمی کنه.
3: روش سوم، پاک کردن خط 3: با این کار اصلاً چک کردنی وجود نداره (در این مثال شاید کار نکنه، ولی این روش رو در نظر داشته باشید)
حالا موقشه شروع کنیم. این برنامه ها رو دانلود کنید:
W32dasm - Hiew - Ollydbg - NuMega SoftICE - Reshack - Crackmaker - IDS - Hackman - Dede
Ramcheat - Api spy - Cool debugger - Win32Program Disassembler - Procdump
Hex Workshop - Patcher - Brain
همه برنامه ها لازم نیست. اما اگه می خواهید حرفه ای کار کنید و اسباب اثاثیه تون کامل باشه، بد نیست همه رو دانلود کنید. در مورد SoftX بگم من هنوز نتونستم تو XP نصبش کنم. شما هم اگه خواستید نصب کنید، مال NT شو بگیرید و چند تا پک رو باید بهش اضافه کنید. میگن کار میکنه، ولی خالی می بندن!!!
خب، از یه برنامه ساده شروع می کنیم مثل:
IPScanner 1.77 Copyright © 2001-2003
http://www.ip-scanner.com
http://t4c.fbi.cz/index1.html
For suggestions please write toinfo@ip-scanner.com
خب، برنامه رو نصب می کنیم. برنامه رو استفاده می کنیم. تازه از برنامه خوشمون آمده که یه وارنینگ هشدار میاد که میگه داداش، تعداد استفاده ها تموم شده. این پنجره هشدار رو می بندیم. خب، همه چیز درسته ولی دکمه استارت اسکن کار نمی کنه، ولی بقیه چیزها درسته. اگه دکمه استارت رو بزنیم، میگه: The program has expired!
خب، از برنامه اصلی IPscanner.exe در جایی که نصب کردیم، تو شاخه Program Files، یه کپی دیگه هم می گیریم به اسم ipscannerbackup.exe ... با W32adasm آن را باز می کنیم. اگه چیز های عجیب دیدید، بخاطر فونت پیش فرضه که بهتر فونت دیگه ای انتخاب کنید.
از بالا گزینه Ref -> String Data Refrances رو می زنیم تا مرجع و جایی که جملات از آنجا فراخوانی می شوند رو پیدا کنیم. خب، جمله !The program has expired رو پیدا و روش کلیک می کنیم.
 

-----------------------------------------------------
Reference to: The program has expired!
Call dword ptr [0041A2E0]
cmp eax,00000001
jne 004086D2
push FFFFFFFF
push 00000000
------------------------------------------------------
Call dword ptr [0041A2E0]
(function(serial,Number=1
 

توضیح: این قسمت اول یه تابع رو فراخونی می کنیم.
 

------------------------------------------------------
cmp eax,00000001
If (function(serial,Number=1
 

در اینجا میشه گفت داریم چک می کنیم (Compare)
 

------------------------------------------------------
jne 004086D2
 

خب، اگه مساوی نبود برو خط فلان و دستورات مورد نظر رو اجرا کن. اگه مساوی بود، ادامه بده.
خب، بغل jne 004086D2 چنین چیزهایی نوشته شده : 004086B0 7520 و اگه با کلید بالا پایین برویم تا روی این دستور برویم، دستور سبز میشه. یعنی یه نوع پرش است. پایین صفحه چنین چیزی رو می بینیم:
codedata @:004086B0 @offset 000086b0
خب، گیج نشین. ما هم این اطلاعات رو لازم نداریم. فقط همین دو تا مهم اند. 7520 و @offset 000086b0
hiew رو باز می کنیم. یه صفحه ابی مثل nc میاد. با Alt+F1 درایو C رو انتخاب میکنیم و برنامه رو باز می کنیم. F4
می زنیم و مد را انتخاب می کنیم: Decode ... حالا می رییم به اون خطی که پیداش کردیم: 86B0 خب، همون جایی هستیم که می خواستیم. F3 رو برای ادیت کردن می زنیم. F2 رو برای ادیت کردن با کدهای اسمبلی می زنیم و jne 004086D2 رو تبدیل می کنیم به je 004086D2 ... اینتر بزنید. دیگه چیزی رو تغییر ندید. F9 رو برای
save کردن بزنید. Esc رو برای خارج شدن. حالا برنامه رو اجرا کنید. (عوض کردن شرط رو به خاطر بیارید)
ایول، برنامه کار میکنه. یعنی دکمه استارت رو فعال کردید. ولی صفحه هشدار میاد. فکر می کنید بتونید صفحه هشدار Nag screen رو بردارید؟ ... سعی کنید.

چند نکته رو می گم:
1- اگه خواستید دستوری رو پاک کنید، از Nop 90 استفاده کنید. (دستور پوچ)
2- سعی کنید تابع ها (call) رو پاک نکنید. ولی اگر هوس کردید چنین کاری رو بکنید، همه دستورات Push
قبل از اون رو هم پاک کنید. چون بدون اجرا تابع چیزی رو تو Stack وارد می کنیم. ولی چون تابع اجرا نمی شه،
این مقادیر Pop نمیشه و این مقادیر با دیگر مقادیر قاطی می شود و اشکال دارد.
3- به تعداد بایت های دستور توجه کنید. چون مثلاً به جای دستور Jne بهتره از Je استفاده کنید. چون سایز دستور جامپ ممکن است فرق بکند. یهو می بینید 10 خط بعدی برنامه کلاً عوض شد و شما اگه می خواهید دستور بزرگتر قرار بدید، باید دستورات بعدی رو اصلاح کنید و اگه کمتر می خواهید قرار بدید، با دستور پوچ جاهای اضافه رو پر کنید.

نکته: پیشنهاد می کنم این برنامه رو کرک کنید و از سرو ته سر در بیارید و با W32dasm کار کنید و از گزینه های مفیدش استفاده کنید. از این برنامه بعد از کرک کردن استفاده نکنید. قیمت این برنامه فکر کنم 20 دلار باشه و کد های شکسته شده رو به هیچ کس نفروشید چون مجازات دارد. اگه از این مطالب چیزی نمی فهمید، یک کتاب اسمبلی بخرید.

copyright mohammadreza honarkar