تبلیغات
تبلیغات

آموزش Crack از پایه برای مبتدیان
(1 مشاهده) (1) مهمان
  • صفحه:
  • 1

موضوع: آموزش Crack از پایه برای مبتدیان

آموزش Crack از پایه برای مبتدیان 3 هفته, 6 روز پیش #137558

  • LinkinForEver
  • آفلاین
  • کاربر متخصص
  • ... It's all about escaping
  • ارسال: 4161
  • دریافت تشكر: 8208
  • 
سلام
دیدم بعضی از دوستان به مبحث کرک نرم افزار علاقه دارند و از اونجایی هم که این کار غیر قانونی هست و آموزش درست درمونی هم براش نیست یک سری آموزش پایه ای قرار بدم تا دوستان علاقه مند بتونن باهاش شروع کنند.

همونطور که گفتم این کار غیر قانونی هست اما یادگیری اون کمک بسیاری در ساخت نرم افزار و عملیات خطا زدایی ( Debugging ) میکنه و من هیچ مسئولیتی نسبت به استفاده غیر قانونی افراد و غیره ندارم.

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

آموزش اول در ساعات آینده قرار میگیره ...

با تشکر


... There is no such thing as forgiveness. People just have short memories

Telegram Channel : t.me/HamidMemarChannel

Official Upcoming CGSite : www.CGNova.ir

كاربران زیر تشكر كردند: ShahriaR 3D, Ali.n, A.Khoshpayam, Mr.Zamani, saman205, mostafa-nazari, Car maker, t0r1st, +Amin+, کورش, bawa

پاسخ: آموزش Crack از پایه برای مبتدیان 3 هفته, 6 روز پیش #137559

  • LinkinForEver
  • آفلاین
  • کاربر متخصص
  • ... It's all about escaping
  • ارسال: 4161
  • دریافت تشكر: 8208
قسمت اول : مقدمات و آشنایی

قبل از شروع هرچیز شما باید بدونید چطوری ماشین و پردازنده عمل میکنه ، همونطور که میدونید کامپیوتر ها با باینر کار میکنند یعنی 0 و 1 ، در طول زمان زبان ماشینی پیشرفته تر و از لحاظ درک انسان ساده تر شد.

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


بیت : دارای مقدار 0 یا 1


بایت : 8 بیت یک بایت رو تشکیل میدند. مقدار 1 بایت بین 0 تا 255 ـه که بخاطر شروع از 0 در واقع 256 عدده...


سوال : چرا مقدار 8 بیت 256 ـه؟ به صورت ساده ، بخاطر ضریب 16 عددی مقادیر بایت که از 0 تا F هست به صورت 0 1 2 3 4 5 6 7 8 9 A B C D E F که حروف به معنی عدد های 11 12 13 14 15 16 هستند.


16 ضرب در 16=256




32بیت : متشکل از 4 بایت و 32 بیت ، این مقدار بین -2,147,483,648 تا 2,147,483,647 هستش که اگر در حالت مثبت حساب کنیم میشه 4,294,967,296 ... براتون اشنا نیست ؟ 4 گیگ ... یادتونه سیستم های 32 بیتی به رم چهار گیگ محدود بودن ؟ افرین حالا داره
قضیه ها معلوم میشه D:


64بیت : متشکل از 8 بایت و 64 بیت ، این مقدار بین -9223372036854775808 تا +9223372036854775807 هست.

در دنیای دیجیتال امروزی هر دیتا و اطلاعات دیجیتالی بر پایه بایت تعریف میشه .

حروف متن ها ، عکس ها ، فیلم ها ، بازی های و فایل های اجرایی ، اطلاعات اینترنت و ...

زبان ماشین به زبانی به اسم Asm یا اسمبلی معروفه که در حال حاضر یکی از معتبر ترین زبان های معماری کامپیتوری حساب میشه ، این زبان دارای یک سری Register هست که کار با بایت ها رو راحت تر میکنه ، این زبان یکی از نزدیک ترین زبان ها به سخت افزاره و مستقیما با ماشین ارتباط داره و دلیل سرعت بسیار بالاش هم همینه.

شما هر زبانی مثل ++C و #C رو که کد نویسی کنید در اخر توسط کمپایلر به اسمبلی و در نهات 0 و 1 تبدیل میشه.



برای یادگیری بیشتر در مورد اسمبلی به این لینک مراجعه کنید.


خب پس وقتی یک نرم افزار اجرا میشه ، در حافظه به صورت اسمبلی لود میشه و توسط سی پیو خونده میشه.


به دستوراتی که در اسمبلی هست Intermodular گفته میشه .


هر عملیاتی که سی پیو یک دستور رو فراخوانی میکنه Calling یا Call گفته میشه.


... There is no such thing as forgiveness. People just have short memories

Telegram Channel : t.me/HamidMemarChannel

Official Upcoming CGSite : www.CGNova.ir

آخرین ویرایش: 3 هفته, 5 روز پیش ارسال توسط LinkinForEver.
كاربران زیر تشكر كردند: ShahriaR 3D, Ali.n, persian, A.Khoshpayam, Mr.Zamani, saman205, Car maker, t0r1st, +Amin+, amirsafari, کورش, bawa

پاسخ: آموزش Crack از پایه برای مبتدیان 3 هفته, 5 روز پیش #137569

  • LinkinForEver
  • آفلاین
  • کاربر متخصص
  • ... It's all about escaping
  • ارسال: 4161
  • دریافت تشكر: 8208
قسمت دوم : شناخت معماری نرم افزار

خب ، قدم بعدی برای شما یادگیری یک کلیت از معماری یک نرم افزار و فایل های PE ( .exe , .dll , .ocx ...) ـه ...

فایل PE چیست ؟

فایل PE به فایل های قابل اجرای ویندوز به عنوان نرم افزار گفته میشه که اختصاری از Portable Executable ـه ، این فایل یک پکیج حاوی یک Header ، چند Section و چند Directory هستش که در بخش هدر اطلاعات و ادرس ها* فایل ، در بخش سکشن اطلاعات و کد های کمپایل شده قرار گرفته ، این فایل دارای بخش های دیگه ای هم هست اما برای الان دونستن این چند تا کافیه.

آدرس ها در دنیای کامپیوتر

همونطور که ما همه چیز رو در زندگی از روی ادرس ها تشخیص میدیم مثل اسم اشخاص ، آدرس خونه ،آدرس شرکت ، شماره تلفن و ... در دنیای کامپیوتر هم ادرس ها وظیفه ارگانیز کردن ، مکان سازی و مکان یابی رو در دنیای کامپیوتر ایفا میکنند.
آدرس ها در نرم افزار های 32 بیتی با 4 بایت و در نرم افزار های 64 بیتی در 8 بایت تعریف میشند.

به عنوان مثال وقتی شما یک عکس رو در فتوشاپ لود میکنید تا ادیت کنید ، در حافظه به اندازه فضای مورد نیاز ابتدا بایت های خالی قرار داده میشه که بهش NULL BYTE گفته میشه.

Null بایت ها در حافظه فضارو اشغال میکنند اما به دلیل بی معنی بودن اونها کامپیوتر اونهارو در محاسبات در نظر نمیگیره ... همینطور در فایل ها موقع ذخیره سازی این فضا ها حذف میشند برای همین اگر شما یک فایل یک گیگابایتی با نول بایت بسازید بعد از کمپرس شدن حجمش کمتر از 1 مگابایت میشه ! در اینده مبحث فشرده سازی هم مورد بررسی قرار میدم.

بعد نرم افزار ادرسی رو برای این فضا در نظر میگیره مثلا 0x3F26DFF2 و در این ادرس شروع به نوشتن اطلاعات تصویر در حافظه میکنه حالا وقتی شما پیکسل 100 ام رو ویرایش میکنید نرم افزار 100 رو به این ادرس اضافه میکنه و مکان ادرس پیکسل رو پیدا میکنه و مقدار جدید رو جایگزین میکنه ... به این مقدار 100 Offset گفته میشه.

پس اگر جایی دیدید که زده مقدار هک شده rax + 95F2 به 95F2 افست و مقدار قبلش رو Image Base میگن که توضیحش پایین تر هست...


کتابخانه (DLL & SLL) و Impot Table
شاید این سوال براتون پیش اومده باشه که فرق DLL با EXE چیه ... خب ، بهتره بگیم این دو 98% شبیه بهم هستن و DLL (Dynamic-Link Library) وظیفه نگه داشتن کد ها و ریسورس ها رو به عنوان یک کتابخونه داره ، خب میگید چرا اصلا همچین چیزی لازمه وقتی خود فایل EXE هست ... چه نیازی به DLL هست ... جواب زیادی داره اما جواب اصلی : بهینه سازی !


بذارید اینطوری بگم ، شما بعضی وقتا نیاز دارید در 5 برنامه همزمان از یک کد و ریسورس ( عکس ، فیلم ، دیالوگ ، صدا ، موس و ... ) استفاده کنید ، فرض کنید کد شما حجمش 10 مگ شده ، حالا شما اگر 5 نرم افزار رو بهشون کد رو اضافه کنید ، 50 مگ این وسط دیتا ساخته میشه که محاسبه اون 5 برابر کند تر میشه ، حالا وقتی از یک کتابخونه DLL استفاده کنید ، این 5 برنامه میتونند همزمان از این فایل استفاده کنند و از طرف دیگه هروقت کارشون با کد تموم شد اون رو Unload کنند و فضارو خالی کنند.


کتابخونه دیگه ای هم به اسم STATIC وجود داره که این کتابخونه ها در هنگام کمپایل به فایل PE اضافه میشند ، هدف اصلی این کتابخونه راحت تر کردن جا به جایی یک کتابخونه هست و راحت تر کردن شیوه به اشتراک گذاری اون ، فکر کنید شما در نرم افزارتون نیاز دارید تصاویر JPG رو استفاده کنید ، خب شما میتونید برید سورس فایل JPG رو دانلود کنید که ممکنه هزاران کد و فایل مختلف باشه و موقع کمپایل کردنش نیاز به چندین کتاب خونه دیگه باشه و با کلی هم خطا مواجه بشید ، بجای اون میتونید کتاب خونه Static رو دانلود کنید و بدون نیاز به کمپایل اون رو مستقیما در نرم افزارتون استفاده کنید.


ویژه کاربران مکس : ایا فایل های پلاگین های مکس DLL هستند ؟ بله! اتودسک برای دسته بندی اونها ، فرمت فایل هارو دستکاری کرده اما تمام پلاگین های مکس DLL هستند.

خب ، به یکی از مباحث مهم میرسیم ...

چطوری DLL ها در EXE مورد استفاده قرار میگیرند ... جواب سادست ... توسط Import و Export !
همونطور که شما بین نرم افزار مکس و زیبراش و حتی مایا ، مدل هارو توسط ایمپورت و اکسپورت جابجا میکنین در بین فایل های PE هم همین روتین اجرا میشه...

> هر فایل DLL یک سری فانکشن و دستور رو در Export Table نگه میداره که شامل اسم و ادرس این دستورات در DLL ـه
> هر فایل EXE ادرس و نام این Export هارو در Import Table نگه میداره که شامل اسم و ادرس این دستورات در DLL ـه
> هر فایل DLL میتونه خودش از DLL های دیگه Import داشته باشه پس فایل DLL هم دارای Import Table ـه

خب حالا کم کم داره مسائل براتون روشن میشه ، این همه سال با این فایل ها سر کار داشتید اما نمیدونستید قضیه چیه D:


نقش دهی در حافظه ( Memory Mapping )
حالا که میدونید سیستم این فایل ها چطور کار میکنن باید یاد بگیرید که چطوری این فایل ها در سیستم اجرا میشند...

فایل های EXE و DLL و کلا PE وقتی که اجرا میشند توسط یک PE Loader یا Launcher در حافظه باز شده ، ادرس دهی میشه و در نهایت به نقطه شروع هدایت میشه.

هر فایل PE یک نقطه شروع داره که بهش Entry Point گفته میشه.

هر فایل PE دارای یک فرم خاص از دیتا هستش که بهش Structure گفته میشه ، وقتی گفتیم در حافظه باز میشه در واقع منظور اینه که این Structure در حافظه باز میشه.

لانچر در هنگام بارگزاری فایل PE در حافظه ابتدا در رم و حافظه سیستم ، ویندوز و سیستم عامل فضایی رو پیدا میکنه که به این عمل Allocation گفته میشه و ادرسی که این عملیات ازش شروع میشه Image Base Address گفته میشه.

بعد از allocation اطلاعات در حافظه به صورت صفحه به صفحه ( Page to Page ) شروع به شکل گرفتم میکنه که به این عملیات Initializing گفته میشه.

بعد از تمام این عملیات که Memory Mapping گفته میشه ، نقطه شروع ( Entry Point ) فراخوانی میشه و مثل یک Firework که توی هوا منفجر میشه ، شروع به اجرا میکنه و بخش های مختلف رو فراخوانی میکنه ...

امیدوارم بیان مطلب ساده و مفهوم بوده باشه ، منتظر قسمت بعدی باشید.


... There is no such thing as forgiveness. People just have short memories

Telegram Channel : t.me/HamidMemarChannel

Official Upcoming CGSite : www.CGNova.ir

آخرین ویرایش: 3 هفته, 5 روز پیش ارسال توسط LinkinForEver.
كاربران زیر تشكر كردند: ShahriaR 3D, Ali.n, A.Khoshpayam, Mr.Zamani, saman205, Car maker, t0r1st, +Amin+, amirsafari, کورش

پاسخ: آموزش Crack از پایه برای مبتدیان 3 هفته, 5 روز پیش #137574

  • LinkinForEver
  • آفلاین
  • کاربر متخصص
  • ... It's all about escaping
  • ارسال: 4161
  • دریافت تشكر: 8208

قسمت سوم : کرک فایل EXE و حذف دیالوگ و پیغام NAG

بسیار خب ، حالا وقتش رسیده که وارد عمل بشید و اولین کرک خودتون رو انجام بدید D:

در این قسمت ما یک فایل exe رو که دارای NAG Screen هست رو کرک میکنیم ، Nag به یک پیغام مزاحم میگن که موقع اجرای نرم افزار یا به صورت رندم در نرم افزار های دمو یا رجیستر نشده به اجرا در میاد.


نرم افزار های مورد نیاز :


  • 1 - یک دیباگر ترجیحا Ollydbg یا x64dbg
  • 2 - یک فایل Hex Editor ترجیحا WinHex یا HxD
  • 3 - نرم افزار UPX و PeiD


من این ها رو برای دانلود نمیزارم همشون رایگان توی نت هستن راحت بگردید گیر میاد.

فایل exe هدف رو از این اینجا دانلود کنید.


قدم اول ) شناسایی Packer و Unpacking :

فایل هدف رو در PeiD باز کنید. ممکنه فایل مورد نظر با یک Packer یا Protector محافظت بشه پس حتمی قبل از شروع دیباگ و کرک باید اون رو Unpack کنیم.

هدف مورد نظر ما توسط UPX کمپرس شده ...



برای Unpack کردن کافیه از upx.exe استفاده کنید و با دستور upx.exe [ Target File ] -d در CMD این کار رو انجام بدید.
اگر در این بخش مشکلی دارید میتونید از نرم افزار UPXEasyGUI استفاده کنید و در تب Decompress فایل رو وارد Unpack کنید.

نرم افزار رو اجرا کنید ، شما باید با یک صفحه Nag روبرو بشید :



بسیار خب D: ... وقت کرک کردنه ...


قدم دوم ) دیباگ و پیدا کردن کد مورد نظر در هدف

:

در همین حال که نرم افزار در حال اجراست ، دیباگر رو اجرا کنید و از منوی اول گزینه Attach رو انتخاب و بعد هدف رو انتخاب کنید.

PID=00000ACC Name=CrackMe_Target_32bit Title=Nag Screen | v5.0.3

حالا نرم افزار دیباگر هدف رو در حالتی قرار میده به اسم Paused یا Suspend در این حالت CPU روی یک دستور قفل شده ...
این حالت توسط Breakpoint ها ایجاد میشه که مهم ترین راهنما در کرک و دیباگ هستند ، به این صورت که اگر شما بر روی یک ادرس یک BreakPoint بذارید ، هروقت نرم افزار به این ادرس مراجعه کنه قفل میشه و شما میفهمید که این ادرس همونیه که دنبالشید یا تغییرات اعمال کنید.

به حرکت از یک BreakPoint به حالت اجرای عادی Run گفته میشه و به حرکت از BreakPoint به صورت دستور دستور Step گفته میشه که معمولا اصلی ترین گزینه Step گزینه Step Into هست .

نکته :
قبل از شروع کار تمام Event هارو در Option غیر فعال کنید.

عملیات یافتن
Call مورد نظر :
1. به بخش Symbols برید.

2. بر روی نام نرم افزار در لیست دوبار کلیک کنید.

3. در ایکون های بالا بر روی Find Intermodular Calls کلیک کنید.



4. در قسمت سرچ پایین تایپ کنید Dialog ، چرا ؟ چون ما دنبال دیالوگ میگردیم و میدونیم که میخوایم یک دیالوگ رو بشکنیم.

5. سه گزینه پیدا میکنید :

<user32.EndDialog> call dword ptr ds:[<&EndDialog>] 00B412AF
<user32.EndDialog> call dword ptr ds:[<&EndDialog>] 00B412C3
<user32.DialogBoxIndirectParamW> call dword ptr ds:[<&DialogBoxIndirectParamW>] 00B413B7

خب ، باید در اینجا کمی اطلاعات در مورد فانکشن های اصلی ویندوز داشته باشید ، ولی سادست ، EndDialog از اونجایی که معلومه از اسمش بستن دیالوگه پس یک گزینه میمونه DialogBoxIndirectParamW ، این هدف ماست ... این فانکشن وظیفه ساخت یک دیالوگ مودال رو داره ، مودال یعنی وقتی دیالوگ ساخته میشه تا بسته نشه تمام قسمت های دیگه نرم افزار قفل یا به اصطلاح یخ میزنه (Freeze) مثل یک خطا یا اررور

6. روی DialogBoxIndirectParamW کلیک راست کنید و Toggle Breakpoint رو بزنید ، باید Address قرمز بشه.

7. از منوی Debug روی Restart یا ایکونش در تولبار کلیک کنید.

8. حالا نرم افزار قبل از اجرای دیالوگ Break میشه :



9. روی گزینه مورد نظر که با Call شروع میشه کلیک راست کنید ، به Binary رفته و روی Fill with NOPs کلیک کنید ، پنجره باز شده رو OK کنید.

نکته : روش NOPs ریسک بالایی داره و بعد از کرک باید Exe فیکس بشه و ممکنه کرش کنه بعضی وقتا ...



روش حرفه ای تر 1 ( پرش به دستور اصلی بعدی ) :
در تصویر بالا دوتا پایین تر از ادرس Call شما متنی ( B43310:"App Ended. Press Key To Exit ..." ) رو مشاهده میکنید ، این چیزیه که بعد از رفتن NAG اتفاق میفته ، حالا کافیه ما یک JUMP درست کنیم ، جامپ از یک ادرس میپره به یک ادرس دیگه ... روی این دستور متن دار کلیک راست کنید و از منوی Copy گزینه Copy Address رو انتخاب کنید ، حالا روی Call دوبار کلیک کنید و JMP رو اضافه و بعدش ادرس رو بعد از یک 0x پیست کنید.

یعنی شما ( CALL DWORD PTR DS:[0x00B43110] ) رو به ( JMP 0x00B413C3 ) تغییر میدید.




روش حرفه ای تر 2 ( پرش به دستور بعدی ) :
اگر کرک شما باز هم باعث کرش exe شد از روش قبلی استفاده کنید ، اما بجای JMP به دستور اصلی بعدی فقط کافیه به دستور بعدی پرش بزنید!

یعنی شما ( CALL DWORD PTR DS:[0x00B43110] ) رو به ( JMP 0x00B413BD ) تغییر میدید.


روش سوم صد در صد تست شده و بدون کرش کرک شده...
در هر عملیات کرک ممکنه 10 روش مختلف استفاده بشه ، برای همین کرکر ها هم برای خودشون امضای شخصی دارند!

10. حالا دوباره کلیک راست کنید و روی Patches کلیک کنید.



فایل پچ شده رو با زدن گزینه Patch File ذخیره کنید.



تبریک ! شما اولین نرم افزار خودتون رو کرک کردید! :)

تمرین : وقتی بر روی دکمه OK کلیک کنید یک MessageBox ظاهر میشه ، با روش بالا این MessageBox رو پیدا و کرک کنید.


امیدوارم مفید بوده باشه :)




... There is no such thing as forgiveness. People just have short memories

Telegram Channel : t.me/HamidMemarChannel

Official Upcoming CGSite : www.CGNova.ir

آخرین ویرایش: 3 هفته, 3 روز پیش ارسال توسط LinkinForEver.
كاربران زیر تشكر كردند: ShahriaR 3D, A.Khoshpayam, Mr.Zamani, Car maker, t0r1st, amirsafari, کورش, bawa

پاسخ: آموزش Crack از پایه برای مبتدیان 3 هفته, 3 روز پیش #137595

  • LinkinForEver
  • آفلاین
  • کاربر متخصص
  • ... It's all about escaping
  • ارسال: 4161
  • دریافت تشكر: 8208

قسمت چهارم : کرک پلاگین مکس



سلام به همگی ، خب وقتشه یک پلاگین رو برای مکس کرک کنیم ، قضیه کرک پلاگین ها کلا متفاوته ...
با دقت دنبال کنید.

فایل پلاگین رو برای مکس 2016 از اینجا دانلود کنید و در فولدر مکس کپی کنید.

برای دانلود فایل های پلاگین اینجارو کلیک کنید.

قدم اول ) شناسایی Packer و Unpacking...
فایل هدف رو در PeiD باز کنید. ممکنه فایل مورد نظر با یک Packer یا Protector محافظت بشه ، بعد از چک کردن میبینم که پلاگین با ++C و 64 بیت نوشته شده ، خب پس پک نشده و خالصه ... حواستون باشه که باید دیباگر ما هم نسخه 64 بیتی باشه!

قدم دوم ) بررسی رفتار هدف :
مکس رو اجرا کنید ، به بخش Utilities برید و بر روی ... More کلیک کنید ، باید اولین گزینه Ethen Exporter باشه .



حالا روی پلاگین کلیک کنید ، پنجره ای باز میشه که از شما سریال میخواد ، اگر پنجره رو ببندیم پلاگین کار نمیکنه و خطای رجیستر نشده میده ...
اگر سریال اشتباه وارد کنیم با پیام "نارنجی در تصویر بالا" Invalid Code مواجه میشیم .


======> Behavior :
خب پس نتیجه میگیریم ، پلاگین بعد از خواسته شدن توسط مکس یک Dialog ایجاد میکنه ... بعد از اون از ما یک String و ورودی میخواد که اون رو توسط GetWindowText گرفته و بعد اون رو مقایسه Compare میکنه و اگر جواب درست بود نرم افزار فعال و اگر نبود کد رد میهش و MessageBox ـه invalid code به نمایش در میاد.

ما 5 تا رد پا ( FootPrint ) داریم ... بیشتر از حد نیاز!

قدم سوم ) دیباگ و پیدا کردن کد مورد نظر :

خب ، چون بسیاری از قدم های این قسمت شبیه به قسمت سوم اموزشه از گفتنش صرف نظر میکنم.

نکته : برای دیباگ کردن پلاگین ، ابتدا نرم افزار اصلی رو اجرا کنید ، بعد از باز کردن اون در دیباگر به بخش Symbols برید ، در این قسمت به دنبال نام فایل پلاگین باشید ، در این آموزش ما به دنبال "ethen_Exporter_2016.dlu" میگردیم...

نکته بسیار مهم : اگر پلاگین مورد نظر در لیست نبود ، بدونید که اون به صورت Deferred لود شده یعنی چی ؟ یعنی پلاگین لود شده در حافظه مکس اما به نقطه Entry Point ارجاع داده نشده و مکس صبر میکنه تا شما اون رو صدا بزنید و بعد اون رو load کامل میکنه ، اگر در لیست نبود باید پلاگین رو به صورت دستی دوباره لود کنید ، برای این کار به منوی Customize و بعد به Plugin Manager برید ، بر روی لیست کلیک راست و Load New Plugin رو بزنید ، بعد فایل "ethen_Exporter_2016.dlu" رو لود کنید. حتمی چک کنید که کنارش دایره سبز و loaded نوشته شده باشه...

بسیار خب ، حالا مکس رو ببندید و دوباره اجرا کنید ، بعد از بالا اومدن مرحله Load New Plugin رو اجرا کنید ، دیباگر 64 بیتی رو Run As Admin اجرا کنید ، بر روی Attach کلیک و مکس رو انتخاب کنید. چند لحظه صبر کنید تا مکس داخل دیباگر لود بشه چند ثانیه تا چند دقیقه بسته به سیستم شما طول میکشه ...

به قسمت Symbols رفته و در لیست نام Ethen رو سرچ کنید ، بعد از پیدا کردنش روش دابل کلیک کنید تا در CPU باز بشه.

نکته : اگر بازم پلاگین رو پیدا نکردید در لیست ابتدا مکس رو بالا بیارید ، دیباگر رو Attach کنید و بعد عملیات Load New Plugin رو اجرا کنید.



حالا بر روی Find Intermodular Calls کلیک کنید تا Function ها و Call ها لیست بشند.

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

1. در لیست Dialog رو سرچ کنید ، نتیجه ای که باید پیدا کنید :
Address=000000001FDC2042
Disassembly=call qword ptr ds:[<&[B]DialogBoxIndirectParamW[/B]>]
Destination=<user32.DialogBoxIndirectParamW>


کلیک راست کرده و Toggle Breakpoint رو بزنید و در تب Breakpoints اون رو غیر فعال و Disable کنید.

2. در لیست GetWindowText رو سرچ کنید ، نتیجه ای که باید پیدا کنید :
Address=000000001FDC1330
Disassembly=call qword ptr ds:[<&[B]GetWindowTextW[/B]>]
Destination=<user32.GetWindowTextW>

کلیک راست کرده و Toggle Breakpoint رو بزنید و در تب Breakpoints اون رو غیر فعال و Disable کنید.

حالا شما دو تا بخش اصلی رو پیدا کردید.

3. بر روی GetWindowText دوبار کلیک کنید.


نکته : در اینجا به دلیل اینکه فقط از دو دستور فقط یکی پیدا شدش ما دیگه Break Point هارو فعال نمیکنیم اگر چند تا از دستورات بود ما باید اونارو فعال و چند بار مکس رو اجرا کنیم تا ببنیم کدوم ها دستور های مورد نظر ما هستن.

بررسی شواهد :



همونطور که مشاهده میکنید ، بعد از صدا شدن دستور GetWindowTextW (A) دو تا پیغام مشاهده میشه ، یکی Product Activated(B) و یکی Invalid Code (C) ای که دیده بودیم!

بعد از MessageBoxW (D) که Product Activate رو نشون میده دستور (D) EndDialog رو مشاهده میکنیم که به این معنیه که بعد از رجیستر شدن پنجره بسته و پلاگین به درستی اجرا میشه...
پس = سه خط بین MessageBoxW تا EndDialog میشه عملیات فعال سازی پلاگین! (E)


حالا میدونیم که کد فعال سازی کجاست ، خب موقع تغییرات و نوشتن JUMP هاست.

قدم آخر ) تغییر در ساختار و کرک پلاگین با تکنیک Double Jump :

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

ادرس خط اول در کد فعال سازی (E در تصویر بالا ) رو کپی کنید و در جایی نگه دارید مثل notepad

به تب Breakpoints رفته و روی DialogBoxIndirectParamW دوبار کلیک کنید .

ادرس دقیقا یک خط بعد (Next Line ) از [COLOR=#548DD4]DialogBoxIndirectParamW[COLOR=#000000] کپی کنید و در notepad نگه دارید.

چرا ؟ بخاطر اینکه ما میخوایم بعد از پرش به عملیات فعال سازی دوباره نرم افزار به کار خودش ادامه بده و کرش نکنه ! در واقع ما از بجای باز شدن دیالوگ ( پنجره ) فعال سازی ، عملیات فعال سازی رو اجرا و سپس به ادامه کد بعد از ساخت دیالوگ بر میگردیم تا نرم افزار به مشکل نخوره ...

حالا دوبار بر DialogBoxIndirectParamW روی کلیک کنید و یک JUMP به ادرس فعال سازی بزنید ، یعنی ما "CALL QWORD PTR DS:[0x000000001FDC4248]" رو به "JMP 0x000000001FDC137E" تغییر میدیم.

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

حالا با کلیک بر روی GetWindowTextW در تب Breakpoints به محل قبلی بر میگردیم ، بعد از 3 خط کد فعال سازی ، دستور EndDialog رو مشاهده میکنیم... خب ما که کد dialog رو جایگزین کردیم ،پس عملا دیالوگی نیست که بسته بشه و این باعث کرش نرم افزار میشه... این کرش برای ما یک فرصت برای درست کردن بقیه چیزاست!

بر روی EndDialog& دوبار کلیک کرده و یه JUMP به ادرس دوم بزنید . یعنی ما "CALL QWORD PTR DS:[0x000000001FDC4240]" رو به "JMP 0x000000001FDC4E5C" تغییر میدیم.


نکته : ادرس های بالا رو کپی/پیست نکنید ، ادرس ها در هر اجرا به دلیل Image Base Layout Randomization تغییر میکنند ، در آینده که آموزش ساخت Patcher داریم ، این قضیه رو کامل بررسی میکنیم.

حالا به قسمت Utilities برید و پلاگین رو اجرا کنید...




محددا تبریک !!! شما اولین پلاگین مکس خودتون رو کرک کردید! :)

در نهایت Ctrl + P رو بنزید و پج خودتون رو با نام "ethen_Exporter_2016.dlu" ذخیره کنید ، مکس رو بسته و فایل رو جایزگین کنید ، مکس رو دوباره اجرا و از کرک خود لذت ببرین ...


تمرین :
سریال نامبر مورد نظر رو در دیباگر و قسمت Memory Referenced Strings پیدا کنید .

امیدوارم مفید بوده باشه :)



... There is no such thing as forgiveness. People just have short memories

Telegram Channel : t.me/HamidMemarChannel

Official Upcoming CGSite : www.CGNova.ir

آخرین ویرایش: 3 هفته, 3 روز پیش ارسال توسط LinkinForEver.
كاربران زیر تشكر كردند: A.Khoshpayam, Mr.Zamani, amirsafari, bawa, looking for art
  • صفحه:
  • 1
مدیران انجمن: m.bodat
زمان ایجاد صفحه: 0.24 ثانیه

جدیدترین آثار ارسالی در گالری

تبلیغات
تبلیغات

جدیدترین ارسالهای تالارگفتگو