X
تبلیغات
رایتل
چهارشنبه 30 اردیبهشت‌ماه سال 1388 ساعت 01:28 ب.ظ
خوب فکر می کنم تا الان و با خوندن مقاله قبلیم تا حدودی با کرک آشنا شده باشید.
در این مقاله سعی دارم شما رو با یکی دیگر از شیوه ها و ابزارهای کرک آشنا کنم.
خوب امروز شما یاد می گیرید چطوری سریال درست یه برنامه رو بدست بیارید.


 سریع میریم سر اصل مطلب
 
خوب به چه ابزارهایی نیاز داریم:


Ollydbg 1.09 :  لینک دانلود
 
چه برنامه ای باید کرک بشه:
خوب برنامه همون برنامه قبلیه ولی اینبار یه تغییر کوچیک توش دادم و اینبار کد درستو بدست میاریم



 روش کرک:


 ابتدا برنامه ای که دادم رو دانلود کنید حالا بازش کنید. یه همچین چیزی رو میبینید.


 


 یک نام و کد الکی بدید. به این صورت :


 


 ارروری مبنی بر اشتباه بودن کد می بینید


 


 متن اررور رو یک جا یاداشت یا به خاطر بسپارید
تا اینجا مثل مقاله قبل بود. اگر هنوز مقاله قبلی رو نخوندین می توانید به این لینک برین


 قسمت جدید کار اینجاست اگر ما فایل crackme2.exe که باید کرک بشه رو با Ollydbg باز کنیم و دنبال متن  ها و رشته هایی که در برنامه هست بگردیم می بینیم هیچ متنی از اررور وجود نداره.
پس چه اتفاقی افتاده؟ چون اینجا ما برنامه رو با UPX که بالا لینکشو گزاشتم پک (pack)  کردیم


ها... ای که گفتی یعنی چه


compressor ها، protection ها و  crypter ها ابزارهایی هستند که کدهای اصلی یه برنامه مثل همین crackme2.exe رو مخفی میکنند تا کار یک کرکر رو سخت کنند.البته در نوع اول در اصل برای کم کردن حجم فایل می باشد. مثل همین upx


 


compressor ها یا فشرده کننده ها کارشون فشرده کردن یه فایل احرایی exe یا دینامیک فایلها dll ها هست البته باید بگم خیلی خفن حفاظت نمی کنند ولی کدهای برنامه رو مخفی میکننند و برای یه تازه کار ممکنه کار رو مشکل کنه و خیلی راحت هم برنامه فشرده شده رو می شه از این حالت خارج کرد یا به عبارتی UnPack کرد.


  protection ها crypter ها یه نمه خفن تر از قبلی هستند و بجز فشرده کرده فایل اون رو رمزی و در مقابل دیباگر هایی همچون Ollydbg یا SoftIce حفاظت می کنند
 
یه نکته که باید بگم اینه که اکثر این ابزارها یعنی compressor ، protection ، crypter  ضدشون هم وجود داره و می شه گفت این چیزا کار یه  کرکر حرفه‌ای اصلا سخت نمی کنه خصوصا اونایی که مجانی هست. 


 چقدر توضیح شد اصلا یادم رفت موضوع سر چی بود.


 خوب حالا برای اینکه بفهمیم فایل crackme2.exe  با چی پک شده از برنامه PEid استفاده میکنیم


برنامه PEid : که لینکش رو بالا دادم باز کنید روی اون دکمه که سه تا نقطه روش هست کلیک کنیو و مسیر فایل crackme2.exe رو بهش بدین. مانند شکل زیر


اونجایی که علامت زدم نوع پکر هست که اینجا UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo رو نوشته یعنی همون UPX که لینکشو بالا دادم


بسته به سلیقه خودتون یه نوعشو دانلود کنید(گرافیکی یا خط فرمان)


 نسخه گرافیکی که نیاز به توضیح نداره برنامه رو داخلش باز کنید Decompress رو بزنید
 


 نسخه خط فرمان هم که به این صورت
upx -d crackme2.exe


 


 حالا که برنامه UnPack شد برای اطمینان می تونید دوباره با PEid چک کنید این بار باید اینو بنویسه Microsoft Visual Basic 5.0 / 6.0 که این یعنی با visual basic درست شده. 


خوب الان باید با Ollydbg کار کنیم


Ollydbg یکی از دیباگر های بسیار قوی و معروف برای ویندوز هست باهاش تغریبا هر کاری می توانیم بکنیم.


دیباگر ها هم ابزارهایی هستند برای پیدا کردن باگها و ایرادهای یه برنامه که بعدش ممکنه منجر به ساخت یه اکپلویت بشه....بگزریم...فقط بگم بهترین دیباگر در دنیا برای ویندوز SoftIce هست که یه محیط خط فرمانی و سیاه داره که حتی باهاش میشه هسته ویندوز را کرک کرد. بعد softice هم Ollydbg در دنیا معروفه


توضیخ دیگه فکر کنم توضیح بس باشه.


حالا ollydbg رو باز کنید و از منوی File>open فایل crackme2.exe رو داخلش باز کنید. مانند شکل باید چنین دستوری اول قرار بگیرد



 بعد اجرای برنامه داخل olly روی پنجره ای اصلی که CPU هست راست کلیک کنید و از منوی ظاهر شده Search for و بعد گزینه All referenced text strings رو انتخاب کنید اینجا جایی هست که شما تمام متن ها و رشته های داخل برنامه‌ای که داخل olly باز کردید می بینید.


لازم به ذکره که اگر برنامه pack شده باشد این قسمت خالی و چرت و پرت خواهد بود و بعد UnPack کردن تمام متنها دیده می شه


حالا همین صفحه رو کمی پایین بیارید و دنبال متن اررو بگردید. یه راه آسونتر هم اینه که رو این صفحه راست کلیک کنید و گزینه Search for text رو انتخاب و قسمتی از متن اررو رو بهش بدین (به بزرگ و کوچیک بودن حروف حساس است)


مانند شکل باید این قسمت رو پیدا کرده باشید.



 روی متن اررو که در عکس هم مشخص کردم دوبار کلیک کنید تا به پنجره اصلی Olly یعنی CPU برگردیم.
شکل رو نگاه کنید :


 


 خوب شکل شاید در نگاه اول یکم پیچیده باشه. ولی به مرور میبینید چقدر سادس
 
حالا برسی می کنیم(شما هم این مراحل رو دنبال کنید تا بفهمید چی به چیه):
دستور PUSH در اول عکس فرمانی هست که کدی که توسط برنامه درسته شده در یه حافظه قرار میده.
اینجا جایی هست که ما باید برنامه رو متوقف کنیم و کد رو از حافظه برداریم. در ادامه توضیح میدم
PUSH‌ دومی هم کدی که ما دادیم رو در حافظه قرار میده.


 دستور Call که در عکس مشخص کردم در واقع تابعی هست در ویژوال بیسیک که دو رشته رو با هم مقایسه میکنه و اگر یکسان باشه مثلا مقدار 0 رو برمی گردونه و در صورت نادرست بودن یه مقدار دیگه


 دستور JNZ هم همون JNE که در مقاله یک هم توضیح دادم. که چک می کنه که اگر مقداری که توسط اون تابع برگردانده شد 0 بود پیامی مبنی بردرست بودن کد بده و اگر یه عدد دیگه بود پیامی مبنی بر اشتباه بودن گد میده.


که همونطور که در مقاله یک هم گفتم با تغییر این دستور به JE فرمان برعکس عمل میکنه... بگزریم چون مربوط به این مقاله نمیشه


 اون دوتا متن هم واضح چی هستن متن پیامها


خوب قبل اینکه ادامه بدم چنتا کلید پرکاربرد در olly رو باید یاد بگیرد


 1- کلید F2 : شما با این دکمه در قسمتی از برنامه که خودمون تعیین می کنیم یه نشانه قرار میدیم که هر موقع برنامه  به اون قسمت که ما نشانه گزاشتیم رسید متوقف شود. این کار و Breakpoint می گن
2 - کلید F9 : باعث اجرای برنامه می شود
3- کلید F12: باعث متوقف شدن موقت برنامه میشه همون Pause
4- کلید F8: با زدن این دکمه می توانید برنامه رو خط به خط اجرا کنید به صورت سطحی و داخل توابع نمیشه
5- کلید F7: با زدن این دکمه هم می توانید برنامه رو خط به خط اجرا کنید با این تفاوت که داخل توابع هم میشه


خوب همینا فعلا کافیه.


حالا روی PUSH اولی با کلید F2 یه breakpoint در این ناحیه قرار میدیم چون می دونیم که کد اصلی از اینجا میگزره مانند شکل


 


 کلید F9 رو میزنیم تا برنامه اجرا بشه


یه نام و کد الکی می دیم و enter می زنیم


بوووووووووم.....


خوب می بینم برنامه جایی که خاستیم متوقف شد.و کد واقعی در پایین مانند شکل نمایان میشود


 
 
خوب حالا کد رو یجا یادداشت کنید چون کار ما اینجا تموم شد


 از Olly خارج بشین... فایل crackme2.exe  رو باز کنید نام قبلی که الکی دادین رو بدین و به جای کد هم کد جدید که بدست آمد


 
WOW.....


دیدین چقدر راحته


بازم میگم یه کرکر خوب باید برنامه نویسی بلد باشه و به اسمبلی مسلط
del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo