Low Level Programming
Machine Code
Machine code is the only language a computer can process directly. True machine code is a stream of raw data, usually binary. This can be converted into decimal, octal, or hexadecimal.
This is a function to calculate the nth Fibonacci number for 32-bit x86, represented in hexadecimal:
8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD989
C14AEBF1 5BC3
Assembly
Assembly is an abstraction of machine code. It is machine code interpreted and represented in a form that is a bit more human-readable than machine code.
Learning
Low Level Learning (YouTube channel)
Useful tools
CyberChef - a swiss army knife for converting data formats, encryption, and other digital data. Developed by UK's intelligence agency, GCHQ.
IDA Freeware -
https://ghidra-sre.org/ - a software reverse engineering suite of tools developed by the NSA and made public
radare2 - a software reverse engineering suite