
Explore what assembly language is, the lowest human-readable programming language made of a sequence of instructions that translates into machine code as zeros and ones, and why it is processor-specific.
Explore the advantages of assembly language for reverse engineering, binary analysis, disassembly, and debugging, and understand program operations. Evaluate its relevance for infosec careers and reverse engineering tasks in 2020.
Discover how the nozomi assembler-based compilation process converts assembly source into an object file with metadata and symbol information, then links it to Alphie.
The lecture introduces number systems, focusing on decimal, binary, and hexadecimal, explaining digits 0–9, how binary counts with 0 and 1, and hexadecimal uses 0–9 and A-F.
Learn how to convert decimal numbers to binary by dividing by two, tracking quotients and remainders, and reversing the resulting sequence to form the binary representation.
Convert binary to decimal by reading bits from right to left, multiplying each bit by the corresponding power of two, and adding the results to obtain the decimal value.
Convert hexadecimal to binary by handling each byte and translating to four-bit groups, yielding the required binary format.
Learn how to convert binary to hexadecimal by grouping four bits per nibble from right to left, converting each nibble to decimal and hex, and assembling the final hex value.
Learn how to convert decimal numbers to hexadecimal by dividing by 16, using 54 as an example, and reversing remainders to obtain the hex value.
Learn how to convert hexadecimal to decimal by multiplying each digit by consecutive powers of 16 and summing the results to obtain the decimal value.
Install linux as a virtual machine to set up a sandboxed environment for practicing x86 assembly and shellcoding.
Trace the history of assembly language as a low-level machine code that gives maximum control, from 16-bit origins toward 32- and 64-bit architectures, laying groundwork for this course.
Discover how CPU registers store data for computation and hold function return values, reducing memory access time, learn about general-purpose registers, base pointers, source and destination indices, extended flags.
Explore basic x86 assembly instructions, including add, subtract, and bitwise or operations, with destination operands and comments using semicolons; learn about unconditional jumps and their role in program flow.
Explore the executable’s sections, including the text section with instructions, data section for initialized variables, the section for global variables, and the resource section for resources used by the program.
Explore the instruction pointer, a key Linux x86 assembly register, and how it directs program flow, impacts debugging, and relates to security mitigations and injection concepts.
Explore little and big endian byte orders, learn how multibyte values are stored in memory, and see how reversing bytes affects interpretation across architectures.
Explains how Linux x86 system calls work, using numbers to invoke open, close, and write, and how to pass arguments in registers from C or assembly.
Create a hello world program in Linux x86 assembly by defining sections, writing to standard output with the write system call, and exiting cleanly, then compile and link.
Learn to rebuild and debug a Linux x86 program using gdb, breakpoints, and disassembly to inspect registers, memory, and stack, and leverage plugins and GUI debuggers for visualization.
Explore assembly data types, from 8-bit bytes to 64-bit double words, and learn memory allocation, labels, and array definitions using define memory and the times instruction.
Master the stack data structure and its push and pop operations in x86 assembly. Learn how ESP and EBP define the stack frame and how function prologues manage it.
Master binary arithmetic in Linux x86 assembly by performing addition, subtraction, multiplication, and division, converting to binary, and using two's complement techniques.
Explore 8-bit multiplication and division in Linux x86 assembly, using registers, flags, and operand handling, with guidance on setting up operands, observing results, and debugging.
Explore bitwise logical operations—and, or, xor, not—through truth tables and binary examples, showing how two numbers interact bit by bit and how to apply them in assembly.
Examine contraflow in Linux x86 assembly by using unconditional and conditional jumps. See how compare sets flags to drive greater than, less than, and equal jumps with practical examples.
Explore how loops in Linux x86 assembly use conditional jumps to decrement registers, push values on the stack, print to stdout, and loop until the value becomes zero.
Define shellcode as code that runs on a victim's machine, and emphasize compact, buffer-aware payloads that avoid bad characters such as null and newline.
Explore crafting a hello world shellcode for Linux x86 by assembling, disassembling, and sanitizing bad characters, then perform a write system call to stdout and exit.
Demonstrate extracting shellcode from a binary using objdump, locating the encoded payload, and compiling a test program that executes the code while illustrating how to bypass mitigations for testing.
The lecture shows building an execve shellcode by setting up a shell pointer, arranging arguments and environment, and pushing the command and pointers onto the stack to run the shell.
Learn how to implement a bind shell in linux x86 assembly by creating a socket, binding to ip address and port, listening, accepting connections, and exchanging data with a client.
Demonstrates building a reverse shell in Linux x86 assembly by setting up a listening server, creating and connecting a socket, duplicating stdio to the socket, and launching a shell.
Extract shellcode from binaries and prepare it for a C program template. Test its execution by running it and connecting with netcat, after disabling mitigations as described.
Learn how to build a Python xor encoder that converts hex input to integers, applies xor per byte, and concatenates results into the final encoded output, enabling byte-wise obfuscation.
Learn to build an x86 assembly xor decoder shellcode that decodes a circular encoded data stream by looping over bytes, using jump instructions and stack-based address retrieval, with dynamic addresses.
Learn how to encode a byte with the not operation to flip bits, convert results to hex, and verify outputs with a calculator.
Explore how to implement a not decoder in Linux x86 assembly by wiring up jumps and a loop that decodes words using the eax register and runtime checks.
You want to learn Assembly Language ? But dont know where to start ?
Search No More
This is the nice course to begin your journey in assembly language.
This course starts from basics that are required for assembly language and dives into some concepts and programming.
This course also includes Payload writing manually.
After this course you will understand assembly language.
Assembly language is must for reverse engineering , exploit development , malware analysis etc
32 Bit assembly is best topic to start with