آموزش عملی زبان اسمبلی x64 و مهندسی معکوس - آخرین آپدیت

دانلود x64 Assembly Language and Reverse Engineering Practicals

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

آموزش کامل زبان اسمبلی x64 (64 بیتی) و مهندسی معکوس

هدف این دوره: درک کد زبان اسمبلی x64 (64 بیتی) و بکارگیری دانش در مهندسی معکوس برنامه‌های x86 و x64.

  • زبان اسمبلی x64 (64 بیتی)
  • مهندسی معکوس
  • دیباگ با x64dbg
  • اصلاح برنامه‌ها
  • تزریق کد به فایل‌های اجرایی 64 بیتی
  • تخلیه (Hollowing) فایل‌های اجرایی 64 بیتی
  • رجیسترها در معماری 64 بیتی
  • دسترسی خواندن و نوشتن در حافظه 64 بیتی
  • قراردادهای فراخوانی x64 (x64 calling conventions)
  • ایجاد توابع x64
  • فیشینگ رمز عبور بدون استفاده از رشته‌ها (Password phishing without strings)
  • ساخت کی‌جن (Keygens)
  • مهندسی معکوس منطق کد برنامه
  • هایلایت کردن و انیمیشن اجرای کد در دیباگر (Trace highlighting and animation)
  • دستکاری پشته (Stack manipulation)
  • تکنیک دیباگ با ثبت توضیحات (Comment tracing debug technique)
  • تکنیک دیباگ با قلاب کردن توابع WinAPI (Hooking WinAPI debug technique)
  • پچ کردن فایل (File Patching)
  • فعال‌سازی دکمه‌های غیرفعال
  • حذف صفحات پیغام اجباری (Removing Nag Screens)
  • ردیابی عمیق برای استخراج رمز عبور (Deep Tracing to Phish out passwords)
  • تکنیک‌های ردیابی حلقه (Loop tracing techniques)
  • دور زدن محافظت‌های ضد دیباگر (Defeating Anti-Debugger protection)
  • مهندسی معکوس باینری بدون رشته‌ها
  • استفاده از پایتون برای نوشتن لودرها و پچ‌کننده‌های حافظه (Using Python to write Loaders and Memory Patcher)
  • مهندسی معکوس باینری‌های محافظت شده بدون آن‌پکینگ (Reversing Software Protected Binary without unpacking)
  • و موارد بیشتر...

پیش‌نیازها

  • ترجیحاً تکمیل دوره اول این مجموعه: "برنامه‌نویسی زبان اسمبلی برای مهندسی معکوس" (Assembly Language Programming for Reverse Engineering)
  • سیستم عامل ویندوز با معماری اینتل x86_64
  • نرم‌افزار Oracle VirtualBox با ماشین مجازی ویندوز 10 یا 11

اگر تا به حال از دیباگرها برای مهندسی معکوس برنامه‌ها استفاده کرده‌اید و مشتاق درک بهتر زبان اسمبلی هستید، یا صرفاً به دنبال یادگیری زبان اسمبلی به روشی جذاب و هیجان‌انگیز هستید، این دوره برای شماست. در این دوره تخصصی، به دنیای پیچیده زبان اسمبلی x64 قدم بگذارید تا مهارت‌های مهندسی معکوس خود را ارتقا دهید. این دوره دومین بخش از مجموعه ما پس از دوره اول با عنوان "برنامه‌نویسی زبان اسمبلی برای مهندسی معکوس" است. در دوره اول، تمرکز بر مبانی x86 و اسمبلی 32 بیتی بود. در این دوره، سفر خود را با یادگیری اسمبلی x64 (64 بیتی) ادامه می‌دهیم. در نیمه دوم این دوره، تمام دانش دوره اول و همچنین یافته‌های جدید این دوره را در تمرین‌های عملی مهندسی معکوس با فایل‌های اجرایی بکار خواهیم برد. گذراندن دوره اول ترجیح داده می‌شود اما اجباری نیست. می‌توانید مستقیماً وارد این دوره x64 شوید و تفاوت‌های آن با x86 را در حین پیشرفت بیاموزید.

در حالی که دوره‌های سنتی زبان اسمبلی بر نوشتن کد از ابتدا با استفاده از اسمبلرهایی مانند NASM یا FASM تمرکز دارند، اغلب شکاف دانشی را در زمینه بکارگیری آن تخصص در مهندسی معکوس دنیای واقعی ایجاد می‌کنند. این دوره برای پر کردن این شکاف طراحی شده است و دانش لازم برای اصلاح و گسترش عملکرد برنامه‌های موجود 32 بیتی و 64 بیتی را در اختیار شما قرار می‌دهد.

با استفاده از دیباگر قدرتمند x64dbg، از اسمبلرهای سنتی عبور کرده و زبان اسمبلی را در بستری که بیشترین کاربرد را در این حوزه دارد به شما آموزش می‌دهیم: مستقیماً در محیط دیباگ. این رویکرد همچنین به عنوان "دیدگاه هکر به زبان اسمبلی" شناخته می‌شود. این رویکرد عملی تضمین می‌کند که با انجام دادن یاد می‌گیرید، که برای مهندسی معکوس و دستکاری موثر نرم‌افزار حیاتی است.

این هنر مخفی به طور گسترده آموزش داده نمی‌شود و هیچ دوره موجود دیگری وجود ندارد که تمام دانش اسمبلی و مهندسی معکوس را به طور منسجم در یک مکان گرد هم آورد. بیشتر اوقات، دوره‌های اسمبلی و مهندسی معکوس به صورت جداگانه ارائه می‌شوند. بسیاری از دوره‌های مهندسی معکوس، دانش اولیه زبان اسمبلی را از دیدگاه هکر نرم‌افزار پوشش نمی‌دهند. علاوه بر این، تقریباً تمام دوره‌های زبان اسمبلی بر نوشتن برنامه‌ها از ابتدا تمرکز دارند تا اصلاح برنامه‌های موجود برای افزودن قابلیت‌های جدید با کد خودتان با استفاده از دیباگری مانند x64dbg.

در این دوره چه چیزی یاد خواهید گرفت:

  1. - پیمایش و استفاده از دیباگر x64dbg
  2. - تجزیه و تحلیل و تغییر فایل‌های اجرایی x64 برای تزریق کد سفارشی
  3. - استفاده از داده‌ها، کد اجرایی و بخش‌های حافظه برای گسترش قابلیت‌های برنامه
  4. - توسعه توابع جدید در برنامه‌های موجود برای قابلیت‌های اضافه
  5. - درک قراردادهای فراخوانی مایکروسافت x64 و قاب‌های پشته (Stack Frames)
  6. - دستکاری مستقیم بخش داده حافظه
  7. - دور زدن رمزنگاری رشته‌ها (Bypass string encryption)
  8. - ردیابی عمیق برای بازیابی داده‌ها و رمزهای عبور
  9. - استفاده از پایتون برای پچ کردن حافظه فرآیند (Patch process memory)
  10. - اصلاح برنامه‌های بسته‌بندی شده بدون آن‌پکینگ
  11. - و موارد بیشتر...

ویژگی‌های این دوره:

  1. - این دوره بر کاربردهای عملی متمرکز است.
  2. - بدون سخنرانی‌های نظری طولانی و خسته‌کننده.
  3. - نیمه اول دوره: یادگیری زبان اسمبلی x64 از طریق دیباگر x64dbg.
  4. - نیمه دوم دوره: تمرین مهندسی معکوس، ردیابی، استخراج داده، هک حافظه و اصلاح فایل‌های اجرایی.

اهداف یادگیری:

با پایان این دوره، درک کاملی از زبان اسمبلی x64 از دیدگاه مهندس معکوس خواهید داشت؛ مهارتی که به ندرت یافت می‌شود و در حوزه‌هایی مانند امنیت سایبری، تجزیه و تحلیل بدافزار و توسعه نرم‌افزار بسیار مورد تقاضا است.

چه یک پژوهشگر امنیتی، تحلیلگر بدافزار، دانشجوی امنیت نرم‌افزار، یا برنامه‌نویسی باشید که به دنبال تعمیق درک خود از درون نرم‌افزارها هستید، این دوره سنگ بنای شما برای حرفه‌ای شدن در "هنر مخفی" زبان اسمبلی و مهندسی معکوس است.

همین امروز ثبت‌نام کنید تا این مزیت رقابتی را کسب کرده و مهارت‌های خود را به سطح بالاتری ببرید. بیایید پیچیدگی‌های x64 را با هم رمزگشایی کنیم. مشتاقانه منتظر هدایت شما در هر مرحله از این سفر هیجان‌انگیز هستم! در دوره آموزشی شما را خواهم دید!


سرفصل ها و درس ها

مقدمه Introduction

  • مقدمه Introduction

  • نصب ماشین مجازی و x64dbg Installing Virtual Machine and x64dbg

  • نصب ماشین مجازی Installing Virtual Machine

مقدمه ای بر معماری x64 Intro to x64 architecture

  • چرا از دیباگر برای یادگیری زبان اسمبلی استفاده کنیم Why use a Debugger for learning Assembly Language

  • دستورالعمل‌های x64 x64 instructions

اولین برنامه شما Your First Program

  • اولین دستورالعمل خود را بنویسید Write your first instruction

  • اولین دستورالعمل خود را بنویسید Write your first instruction

دسترسی به حافظه Accessing Memory

  • ذخیره ثابت‌های عددی در حافظه Storing number constants in memory

  • ذخیره ثابت‌های عددی در حافظه Storing number constants in memory

  • ذخیره ثابت‌های رشته‌ای در حافظه Storing string constants in memory

  • ایجاد متغیرها Creating variables

دستورالعمل‌های جمع Add Instructions

  • چگونه یک رجیستر را با استفاده از XOR صفر کنیم How to zero out a register using XOR

  • دستورالعمل‌های ADD ADD instructions

  • دستورالعمل‌های ADD ADD Instructions

دستورالعمل‌های MOV جزئی Partial MOV instructions

  • ایجاد یک قالب جدید Creating a new template

  • دستورالعمل‌های MOV جزئی Partial MOV instructions

  • دستورالعمل‌های MOV جزئی Partial MOV Instructions

دستورالعمل‌های PUSH و POP PUSH and POP instructions

  • مبانی PUSH و POP Basics of PUSH and POP

  • تمرین روی PUSH و POP Exercise on PUSH and POP

  • مبانی PUSH و POP Basics of PUSH and POP

دستورالعمل‌های MOV MOV Instructions

  • مقدمه ای بر دستورالعمل‌های MOV Intro to MOV Instructions

  • عملی روی دستورالعمل‌های MOV Practical on MOV Instructions

  • دستورالعمل‌های MOV MOV Instructions

دستورالعمل‌های XCHG XCHG Instructions

  • دستورالعمل XCHG XCHG Instruction

  • حافظه XCHG XCHG Memory

دستورالعمل‌های INC، DEC، NEG، ADD و SUB INC, DEC, NEG, ADD and SUB

  • INC و DEC INC and DEC

  • NEG NEG

  • ADD و SUB ADD and SUB

فلگ‌های رجیستر Register Flags

  • مقدمه ای بر فلگ‌های رجیستر Intro to the Register Flags

  • فلگ CF CF Flag

  • فلگ OF OF Flag

  • فلگ SF SF Flag

  • فلگ ZF ZF Flag

عملیات منطقی بیتی Bitwise Logical Operations

  • مقدمه ای بر عملیات منطقی بیتی Introduction to Bitwise Logical Operations

  • عملیات AND AND Operations

  • عملیات OR OR Operations

  • عملیات XOR XOR Operations

  • رجیستر فلگ‌ها Flags Register

  • عملیات NOT NOT Operation

دستورالعمل‌های پرش Jump Instructions

  • مقدمه ای بر پرش‌ها Introduction to Jumps

  • دستورالعمل‌های JMP JMP Instructions

  • دستورالعمل‌های TEST TEST Instructions

  • دستورالعمل‌های CMP CMP Instructions

  • پرش‌های شرطی Conditional Jumps

  • پرش‌های شرطی امضا شده Signed Conditional Jumps

  • پیاده‌سازی دستورالعمل‌های if Implementing If Statements

  • پیاده‌سازی دستورالعمل‌های if-else Implementing If-Else Statements

  • تست‌های متعدد IF Multiple IF tests

  • حلقه‌های WHILE WHILE Loops

  • حلقه‌های DO-WHILE DO-WHILE Loops

آرایه‌های حافظه Memory Arrays

  • مقدمه ای بر آرایه‌ها در x64dbg Introduction to arrays in x64dbg

  • پیمایش یک آرایه Looping through an array

  • دستورالعمل‌های LEA LEA Instructions

دستورالعمل‌های MUL و DIV MUL and DIV instructions

  • دستورالعمل‌های MUL MUL instructions

  • دستورالعمل‌های DIV DIV Instructions

  • دستورالعمل‌های IMUL IMUL Instructions

ایجاد توابع Creating Functions

  • پشته The Stack

  • ایجاد استک‌فریم‌ها، دستورالعمل‌های CALL و RET Creating Stackframes, CALL and RET instructions

  • قراردادهای فراخوانی Calling Conventions

  • فراخوانی تابع ساده با ۴ آرگومان و بدون متغیر محلی Simple Function Call with 4 args and no local variables

  • فراخوانی تابع با ۴ آرگومان و ۴ متغیر محلی Function Call with 4 args and 4 local variables

  • فراخوانی تابع با ۵ آرگومان Function Call with 5 args

  • فراخوانی تابع با ۶ آرگومان Function Call with 6 args

  • فراخوانی تابع با ۷ آرگومان Function Call with 7 args

تمرین‌های مهندسی معکوس Practicals on Reverse Engineering

  • مقدمه ای بر تمرین‌ها Introduction to the Practicals

  • چگونه نوع فایل exe را بررسی کنیم How to check exe type

ردیابی برای رمزهای عبور Tracing for Passwords

  • فیشینگ برای رمز عبور Phishing for Passwords

چگونه یک پرش را معکوس کرده و فایل را وصله کنیم How to reverse a jump and patch the file

  • چگونه یک پرش را معکوس کرده و فایل را وصله کنیم How to reverse a jump and patch the file

روش ردیابی با کامنت The Comment Tracing method

  • روش ردیابی با کامنت The Comment Tracing method

وصله کردن exe برای تغییر رمز عبور Patch exe to change password

  • چگونه مستقیماً به حافظه دسترسی پیدا کنیم تا رمز عبور را تغییر داده و فایل exe را وصله کنیم How to directly access memory to modify password and patch the exe file

تکنیک‌های کرک کردن GUI GUI Crackme Techniques

  • فعال کردن یک دکمه غیرفعال شده خاکستری Enabling a disabled greyed out button

  • چگونه یک پیام‌باکس اجباری را حذف کنیم How to remove a Nag Message Box

  • وصله‌سازی برای پذیرش هر کلید سریال و همچنین برای تغییر پیام‌باکس Patching to accept any serial key and also to modify the message box

ردیابی عمیق نام کاربری و رمز عبور Deep Tracing Username and Password

  • ردیابی نام کاربری Tracing username

  • ردیابی رمز عبور Tracing password

ردیابی مقادیر EAX و گام برداشتن در فراخوانی‌ها Tracing EAX values and Stepping into Calls

  • ردیابی مقادیر EAX Tracing EAX values

  • وصله کردن برای نمایش پیام درست Patching to show the Right Message

گرفتن رمز عبور Get the password

  • ردیابی مقادیر EAX برای گرفتن رمز عبور Tracing EAX values to get password

  • وصله کردن برای نمایش پیام تبریک Patching to show Congrats message

ردیابی حلقه برای رمزهای عبور طولانی Loop Tracing Long Passwords

  • ردیابی حلقه بخش ۱ Loop Tracing Part 1

  • ردیابی حلقه بخش ۲ Loop Tracing Part 2

  • ردیابی حلقه بخش ۳ Loop Tracing Part 3

  • شناسایی چندین گزینه وصله‌سازی برای نمایش همیشه پیام خوب Identifying multiple patching options to always show the good message

ردیابی حلقه برای کرک GUI Loop Tracing GUI Crackme

  • ردیابی شماره ثبت نام - بخش ۱ Loop Tracing Registration Number - Part 1

  • ردیابی شماره ثبت نام - بخش ۲ Loop Tracing Registration Number - Part 2

  • روش صحیح برای وصله کردن MessageBox Proper way to patch MessageBox

تکنیک‌های ردیابی کامنت Comment Tracking Techniques

  • تکنیک ردیابی کامنت - بخش ۱ Comment Tracking Technique - Part 1

  • تکنیک ردیابی کامنت - بخش ۲ Comment Tracking Technique - Part 2

  • وصله کردن برای نمایش پیام خوب Patching To Show the Good Message

چگونه Keygen بسازیم How to Create Keygens

  • ساخت یک Keygen خودکار Creating a Self-Keygen

  • تغییر عنوان MessageBox با استفاده از CodeCaves Modifying MessageBox Caption using CodeCaves

چگونه Keygen بسازیم حتی اگر هیچ پیام‌باکس خطایی نشان داده نشود How to Create Keygens even though no Error MessageBox is shown

  • فیشینگ برای سریال Phishing for the Serial

  • ساخت یک keygen حتی بدون پیام‌باکس بد Creating a keygen eventhough no bad messagebox

ردیابی سریع با تغییر فلگ ZF Fast Tracing by Toggling ZF flag

  • ردیابی سریع با تغییر فلگ ZF Fast Tracing by Toggling the ZF flag

  • وصله کردن پرش‌های متعدد با بلوک‌های NOP Patching Multiple Jumps with Block NOPs

حذف پیام‌های تکراری و شکستن محافظت ضد دیباگر Removing Recurrent Nags and Defeating Anti-Debugger Protection

  • نصب Process Hacker Installing Process Hacker

  • تحلیل رفتار Behaviour Analysis

  • شکستن محافظت ضد دیباگر و از بین بردن اولین پیام اجباری Defeating Anti-Debugger and Killing the 1st Nag

  • از بین بردن دومین پیام اجباری و اجتناب از وصله کردن حافظه جابجاشده Killing the 2nd Nag and Avoiding Patching Relocation Memory

  • از بین بردن سومین پیام اجباری و استفاده از API خروج بین ماژولی برای خروج Killing 3rd Nag and Using Intermodular Exit API to Quit

Keygen خودکار با استفاده از بخش داده با تابع printf Self-Keygen Using Data Segment with printf Function

  • ردیابی الگوریتم تولید کلید Tracing the algorithm for key generation

  • تزریق تابع printf خود از درون یک exe برای چاپ کلید سریال Inject own printf function from within an exe to print out serial key

ردیابی طول کد مخفی و تجزیه و تحلیل پارامترهای x64 Fastcall Tracing length of secret code and analyzing x64 Fastcall Parameters

  • تحلیل رفتار Behaviour Analysis

  • ردیابی طول کد مخفی Tracing length of secret code

  • تجزیه و تحلیل پارامترهای x64 Fastcall Analyzing x64 Fastcall Parameters

دور زدن رمزگذاری Bypassing Encryption

  • تحلیل رفتار Behaviour Analysis

  • دور زدن رمزگذاری با تجزیه و تحلیل دستورالعمل‌های CMP Bypassing encryption by analyzing CMP instructions

  • دور زدن رمزگذاری با وصله‌سازی Bypassing encryption by patching

دور زدن محافظت UPX Bypass UPX protection

  • دیباگ کردن یک باینری بسته‌بندی شده با UPX Debug a UPX packed binary

  • فیشینگ برای رمز عبور بدون استفاده از جستجوی رشته Phish for password without using string search

  • وصله کردن حافظه با پایتون Patch memory with Python

روش پشته فراخوانی و استفاده از بارگذار پایتون برای دور زدن بسته‌بندی Call Stack Method and Using Python Loader to bypass packing

  • روش پشته فراخوانی و شناسایی AOB (آرایه بایت‌ها) برای اسکن حافظه Call Stack Method and Identifying AOB (Array of Bytes) for memory scan

  • بارگذاری و وصله کردن حافظه با پایتون Load and Patch Memory with Python

  • قالب اسکریپت پایتون برای وصله‌سازی متعدد Python Script Template For Multiple Patching

منابع برای مطالعه بیشتر Resources For Further Study

  • منابع برای مطالعه بیشتر Resources for further study

نمایش نظرات

آموزش عملی زبان اسمبلی x64 و مهندسی معکوس
جزییات دوره
13 hours
108
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
1,387
4.7 از 5
دارد
دارد
دارد
Paul Chin
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Paul Chin Paul Chin

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