Рет қаралды 16,920
Trying to break into RE, but feeling overwhelmed? Looking for a better foundational understanding of what you're already practicing? Somewhere in between? This "master0Fnone Class" is for you - no matter where you assess yourself to be, you can learn RE, and it doesn't have to be a slog.
The jeFF0Falltrades master0Fnone Class series is a collection of free online courses made to make learning topics - like reverse engineering - more accessible (and fun) to everyone.
In this first episode, split into multiple parts, we will:
- Walk through the Language Processing System that converts high-level code to assembly code to the machine code read by your processor, and all of the stages in-between (Part 1)
- Introduce several common features of x86/x64 assembly language and conventions (Part 1)
- Walk through a practice program demonstrating several common C programming structures and statements (Part 2)
- Reverse that practice program in Ghidra to practice identifying these structures and instructions (Part 3)
- Challenge you to take what you've learned and get yourself onto the "Wall of Fame" by finding the hidden flag in the included "CrackMe" program! (Whenever You Want!)
CrackMe Challenge Instructions:
- Download the binary from the Project Homepage below, under the "crackme" folder for this episode
- Use whatever tools you wish to try to reverse the hidden flag in the binary
- Submit the flag and the name you wish to appear on the Wall of Fame to this form: forms.gle/XWWqYyeNUkFH8tHMA
- Brag to your friends by showing them your name on the Wall of Fame in the Project Homepage "crackme" folder, and find out how good your relationship with those friends is!
Please leave feedback and questions here as comments, or DM me on Mastodon (social links listed on the channel).
Check the pinned comment for any updates to the content.
Let me know what you would like to see in future videos!
Project Homepage:
github.com/jeFF0Falltrades/Tu...
Resources and References:
- Programming Language Processing System Example: www.tutorialspoint.com/compil...
- x86 Architecture: en.wikibooks.org/wiki/X86_Ass...
- x86 CPU wiki.osdev.org/CPU_Registers_...
- x86 Instruction Listing: en.wikipedia.org/wiki/X86_ins...
- x86 Calling Conventions: en.wikipedia.org/wiki/X86_cal...
- x64 Calling Conventions (MS): learn.microsoft.com/en-us/cpp...
- Functions & Stack Frames in Assembly: en.wikibooks.org/wiki/X86_Dis...
- Stack Functionality in Assembly: www.varonis.com/blog/stack-me...
- Pointers in C/C++: www.geeksforgeeks.org/c-point...
- x86 Assembler/Disassembler Online: defuse.ca/online-x86-assemble...
- Segment Registers & Segmentation: wiki.osdev.org/Segmentation
- Ghidra: github.com/NationalSecurityAg...
- x64dbg: x64dbg.com/
- MSYS2 (for utilizing gcc quickly): www.msys2.org/
Episode 1, Part 1
00:00:00 - Intro
00:03:30 - Important Notes
00:03:39 - Cheat Sheet/Episode Topics Overview
00:08:16 - The Language Processing System
00:21:43 - Loading and Running an Executable File
00:28:37 - Common x86 Registers and Their Usage
00:39:37 - Common x86 Assembly Instructions
00:56:18 - Stack Layout & Operations
01:07:03 - Observing Stack Operations in a Debugger
01:14:54 - Common x86 Calling Conventions
01:18:41 - Part 1 Wrap-Up