• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 27 رای - 2.41 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: دستورات اسمبلی در کرک
حالت خطی
#3
اطلاعات بیشتر :

جلسه ی اول

معرفی Cracking

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

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

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

Assembly

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

ولی نیازی به یاد گیری کامل آن نیست.

به تعریف چند اصتلاح می پردازیم :

بیت : به کوچکترین جز تشکیل دهنده ی هر واحد اصلاعاتی یه بیت گفته میشود.

بایت: به مجموعه هر 8 بیت یک بایت گفته میشود.

سگمنت: ناحیه ای از حافظه است که آدرس شروع آن بر 16 قابل تقسیم است.

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

4 نوع سگمنت وجود دارد :

1.سگمنت کد

2.سگمنت داده

3.سگمنت پشته

4.سگمنت اضافی

تبدیل مبناها

شما باید قادر باشید اعداد را در مبناهای 2 و 10 و 16به همدیگر تبدیل کنید که میتوانید از ماشین حساب ویندوز استفاده کنید.

اعدادی که در مبنای 2 میباشند به آنها باینری نیز گفته میشود و ارقام آن از 2 کوچکتر است (یعنی فقط از 0و1 تشکیل میشود)

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

اعدادی که در مبنای 16 میباشند ارقام آن از 16 کوچکتراند (یعنی از 0 تا 15) با این تفاوت که اعداد 10 تا 15 با جای عدد از حرو ف A تا F استفاده میشوند:

10 11 12 13 14 15

A B C D E F

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

Grammer Crack 1

رجیستر:

درداخل CPU حافظه های سریع به نام ثبات ها وجود دارند چون دستیابی به ثباتها سریع تر از دستیابی به حافظه است در صورتی که فقط از ثباتها استفاده میکنند بسیار سریع تر از دستوراتی که عملوندهای آنها در حافظه اند اجرا میشوند.

ثبات های عمومی :

AX

BX

CX

DX

که همه ی آنها برای انتقال داده بین CPU و ثبات ها به کار میرود.

دستورات اسمبلی برای کرک کردن :

دستور MOV برای انتقال داده های از محلی به محل دیگر مورد استفاده قرار میگیرد و فرم کلی آن به این صورت است:

Mov ax , 40 مقدار 40 در ثبات AX ذخیره میکند.

Mov ax , dx انتقال محتویات dx به ax



دستور Add

این دستور برای جمع کردن بین دو عدد در ثبات ها مورد استفاده قرار میگیرد .

Mov ax , 40 مقدار 40 در ثبات AX ذخیره میکند.

Mov bx , 32 مقدار 32 در ثبات BX ذخیره میکند.

Add bx , ax مقدار ثبات Ax رو با Bx جمع میکند و مقدار 72 در Bx ریخته میشود.



دستور Sub

از این دستور برای تفریق کردن بین 2 عدد در ثبات ها استفاده میشود .

Mov ax , 40 مقدار 40 در ثبات ax ریخته میشود.

Mov bx , 32 مقدار 32 در ثبات bx ریخته میشود.

Sub ax , bx مقدار Bx از Ax کم میشود و مقدار 12 در ثبات Ax ریخته میشود.



دستور Jmp

برای انتقال به یک نقطه ی خاص به کار بردن میشود.

Jmp e1 زمانی که برنامه به این خط میرسد به سطری که نامش e1 است پرش میکند.


Grammer Crack2

آموزش استفاده از Jump های شرطی:

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

Jump ها رو به برای شما به همراه معنی تعریف میکنم:



Jne پرش در صورت عدم تساوی

Je پرش در صورت مساوی بودن

Jmp پرش به صورت مستقیم

Ja پرش در صورت بیشتر بودن

Jna پرش در صورت بیشتر نبودن

Jae پرش در صورت بیشتر یا مساوی بودن

Jnae پرش در صورت بیشتر یا مساوی نبودن

Jb پرش در صورت کمتر بودن

Jnb پرش در صورت کمتر نبودن

Jbe پرش در صورت کمتر یا مساوی بودن

jnbe پرش در صورت کمتر یا مساوی نبودن

Jg پرش در صورت بزرگتر بودن

jng پرش در صورت بزرگتر نبودن

jge پرش در صورت بزرگتر یا مساوی بودن

Jng پرش در صورت بزرگتر یا مساوی نبودن

Jl پرش در صورت کوچکتر بودن

Jnl پرش در صورت کوچکتر نبودن

jle پرش در صورت کوچکتر یا مساوی بودن

jnle پرش در صورت کوچکتر با مساوی نبودن



پشته(Stack)

حافظه ی خاصی در خارج از CPU است که برای ذخیره موقت داده بکار می رود

Push

قرار دادن عنصری را در پشته Push کردن می گویند.

POP

و خارج کردن عنصری را از پشته pop کردن میگویند.

جمع آوری اطلاعات

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

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

بررسی فایل های اجرایی به صورت ایستا

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

شناسایی نوع کامپایلر

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

خصوصیات فایل های اجرایی در کامپایلرها مختلف

اکثر کامپایلرهای سطح بالا ابتدا کدهای نوشته شده را زبان سطح پایین ترجمه کرده و سپس آنرا کامپایلر می کنند این کار بیشتر به دلیل کاهش پیچیدگیهای موجود در زبان های سطح بالا صورت می گیرد و در حقیقت بار کامپایلرهای نهایی کاهش می دهد به عنوان مثال زبان visual C++ متکی بر کامپایلر micro assembler و زبان C++ Builder متکی بر کامپایلر Turbo assembler است

Visual C++

فایل های اجرای تولید شده توسط Visual C++ به طور کامل به زبان ماشین ترجمه می شود اسامی و برچسبها وسایر راهنماها در فایل های اجرایی حذف شده و قابل دسترس نیستند.

معمولا منابع فایل های اجرایی شده، منابع استاندارد از قبیل Dialog , Bitmap و ... هستند.

فایل های اجرایی تولید شده توسط Visual C++از سرعت بالایی برخوردار هستند. به همین دلیل برای نوشتن درایورهای سخت افزاری و برنامه های که نیاز به سرعت بالا دارند از آن استفاده می شود.
C++Builder و Delphi

فایل های اجرایی تولید شده توسط این زبانها تقریبا خصوصیات مشترکی دارد. ازجمله این که اسامی کلاسها و اشیاء موجود در برنامه فایل اجرایی نهایی نیز وجود دارد که این امر باعث خوانایی بیشتر فایل های اجرایی آنها شده و در نتیجه مراحل Decompile شدن آنها به سادگی صورت می گیرد.

Visual Basic

فایل های اجرای تولید شده توسط Visual Basic کاملا به زبان ماشین ترجمه نمی شود و بطور معمول از توابع API به طور مستقیم استفاده نمی کند کلیه کارهای اصلی از قبیل مقایسها، انتصاب ها، فراخوانی توابع و ... از فایل ها توسط توابع کتابخانه MSVBVM در حقیقت فایلهای اجرایی تولید شده حاوی حجم اندکی کد ماشین بعلاوه فراخوانی ها متعددی از فایل MsvbmXX.dll هستند به همین دلیل حجم فایلهای اجرایی تولید شده بسیار کوچک بوده و سرعت پایین برخودار هستند.

(Vb,C++).Net

ساختار اجرایی فایل های تولید شده توسط کامپایلر .Net با ساختار فایل های تولید شده توسط کامپایلرها کاملا متفاوت است کدها به زبان ماشین ترجمه نمی شوند بلکه به یک زبان واسطه به نام IL ترجمه شده و توابع موجود در کتابخانه های .NET Farmework طی مراحل آنها به دستورات قابل اجرا توسط ماشین تبدیل می کند همین امر باعث شده است که فایلهای اجرایی تولید شده توسط این زبان ها بسیار کند بوده و منابع سیستم را با سرعت بالایی مصرف کنند.
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
  


پیام‌های این موضوع
دستورات اسمبلی در کرک - توسط Amin_Mansouri - 01-06-2012، 07:37 PM
RE: دستورات اسمبلی در کرک - توسط Amin_Mansouri - 01-06-2012، 07:40 PM
RE: دستورات اسمبلی در کرک - توسط امیر - 04-11-2012، 12:19 PM
RE: دستورات اسمبلی در کرک - توسط امیر - 04-12-2012، 03:37 PM

پرش به انجمن:


Browsing: 4 مهمان