Assembly Programming and Shellcoding
Assembly Programming and Shellcoding
پس از پرداخت اطلاعات به ایمیل شما ارسال خواهد شد
- متوسط
- مسیر آبی
- ۵ درس
دربارهی این دوره
یکی از پیشنیازهای مهم ورود به دنیای تحلیل باینری در پلتفرمهایی مانند ویندوز و لینوکس و حتی Embedded Systemها داشتن دانش عمیق نسبت به زبان برنامهنویسی اسمبلی و درک قواعد زبان ماشین (قواعد ISA پردازنده) است. با این حال، زبان برنامهنویسی اسمبلی به ما این امکان را میدهد تا در پایینترین سطح ممکن به تعامل با سیستم و سیستمعامل بپردازیم. به همین دلیل اگر کار با این زبان را آموخته باشید، درک کاملی از شیوهی عملکرد رایانهی خود خواهید داشت.
آشنایی با زبان Assembly به عنوان یک زبان برنامهنویسی ضروری، در بین کارشناسان امنیت سایبری یک امر اثبات شده است زیرا در زمینههای مختلفی مانند تحلیل بدافزار، مهندسی معکوس، توسعه کدهای اکسپلویت و انجام تحلیل آسیبپذیری چه به صورت استاتیک و چه به صورت دینامیک کاربرد اساسی دارد. با توجه به موارد ذکر شده، این دوره با هدف آموزش این زبان به افراد علاقهمند به یادگیری مهندسی معکوس و کاربردهای آن در شاخههای مختلف امنیت سایبری، طراحی و ارایه شده است.
شما با حضور در این دوره، مطالب متنوعی مانند مفاهیم پایهی ماشین، معماری دستوراالعملهای CISC و RISC، معماری x86 و x64 اینتل – ای ام دی، نوشتن کدهای ماشین مستقل از محیط (Shellcode) در لینوکس و ویندوز، آشنایی کامل با فرآیند Disassembly باینریها و آشنایی با مفاهیم پایهی تحلیل Disassembly را به صورت عملی و نظری خواهید آموخت.
مدت زمان این دوره ۱۶ ساعت است که طی ۲ جلسهی ۸ ساعته، در روزهای پنجشنبه و جمعه از ساعت ۱۰:۰۰ الی ۱۸:۰۰، به صورت حضوری برگزار خواهد شد. شروع این دوره از روز پنجشنبه ۱ دی ماه خواهد بود.
آدرس آکادمی راوین: تهران، خیابان شهید مطهری، خیابان سلیمان خاطر، پلاک ۱۰۵
این دوره به چه افرادی توصیه میشود؟
- توسعهدهندگان سیستمهای نهفته
- کارشناسان امنیت سایبری
- کارشناسان مهندسی معکوس
- تحلیلگران بد افزار
- علاقهمندان به اکسپلویت نویسی
- توسعهدهندگان بدافزار
- علاقهمندان به درک مفاهیم بسیار پایه از سیستمهای کامپیوتر
برای حضور در این دوره چه دانشهایی باید داشته باشم؟
- آشنایی با چگونگی عملکرد دقیق کامپیوتر
- آشنایی با ساختار سیستمعامل
- آشنایی با یک زبان برنامهنویسی
سرفصلهای دوره
-
Fundamental Concepts of the Machines
-
Processor Architecture
-
CISC
-
RISC
-
RISC-V
-
Processor Manufacturer
-
Intel
-
AMD
-
ARM
-
MIPS
-
CPU Operational Modes
-
Ring -3 Intel ME and AMD ASP
-
Ring -2 Intel SMM
-
Ring -1 Hypervisor
-
Ring 0 Kernel
-
Ring 1 User-mode
-
CPU Memory Addressing
-
Physical Address
-
Virtual Address
-
MMU and TLB
-
Real Mode Addressing
-
Protected Mode Addressing
-
Compilers, Assemblers, and Linkers
-
Nasm and Masm Assembler
-
LD and ML Linker
-
Objdump, Ndisasm, and Capstone
-
IA-32 Assembly Language
-
ELF Program Structure for use with NASM
-
PE Program Structure for use with MASM
-
CPU Registers
-
General Registers
-
X87 FPU Registers
-
MMX, SSE, SSE2, YMM Registers
-
ALU Status Register (EFLAG or RFLAG)
-
Data Types
-
BYTE
-
WORD
-
DWORD
-
QWORD
-
Data Movement Instructions
-
Arithmetic Instructions
-
Conditional Instructions
-
Conditional Jumps
-
Unconditional Jump
-
Strings and Loops
-
Interrupts, Traps, and Exceptions
-
Procedures, Prologues and Epilogues
-
Syscall structure and ABI for Linux
-
Calling standard library functions
-
-
Shellcoding on Linux
-
Introduction to the Shellcoding
-
What is Shellcode?
-
Why we need Shellcodes?
-
Why shellcode use PIC?
-
How shellcode really works?
-
Tiny Shellcode Techniques
-
-
Virtual Shellcode Development Environment
-
Shellcoding Tools
-
Linux Syscalls
-
Compiling and Extracting Shellcode
-
Techniques for Removing Bad Characters
-
Debugging Shellcode Using Various Debuggers
-
Linux Shellcode and File Descriptors
-
Locating and Manipulating Strings in Memory
-
Reusing Shellcode Blocks
-
Learn an Easier Way to Compile and Extract Shellcode
-
Linux Command Execution Shellcode
-
-
How Does a Disassembler Work?
-
What is a Binary Instrumentation?
-
Static Binary Instrumentation
-
Accurate Disassembly
-
Linear Disassembly
-
Recursive Disassembly
-
PEBIL’s Disassembly
-
Angr’s Disassembly
-
BinCFI Disassembly
-
SecondWrite Disassembly
-
Preserving Control Flow Branches
-
Fixing direct control flow branches
-
Fixing indirect control flow branches
-
Callbacks
-
Dynamic Binary Instrumentation
-
Assembly to Assembly Transformation – Case Study (PIN Tool)
-
Disassemble and Resynthesize – Case Study (Valgrind Tool) What is binary lifting in reverse engineering?
-