All Projects → cirosantilli → X86 Assembly Cheat

cirosantilli / X86 Assembly Cheat

MOVED TO: https://github.com/cirosantilli/linux-kernel-module-cheat#userland-assembly SEE README. x86 IA-32 and x86-64 userland minimal examples tutorial. Hundreds of runnable asserts. Nice GDB setup. IO done with libc, so OS portable in theory. NASM and GAS covered. Tested in Ubuntu 18.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples, ARM cheat at: https://github.com/cirosantilli/arm-assembly-cheat

Programming Languages

assembly
5116 projects

Labels

Projects that are alternatives of or similar to X86 Assembly Cheat

Rop Tool
A tool to help you write binary exploits
Stars: ✭ 590 (-23.67%)
Mutual labels:  x86, x86-64
Squalr
Squalr Memory Editor - Game Hacking Tool Written in C#
Stars: ✭ 645 (-16.56%)
Mutual labels:  x86, x86-64
Plasma
Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.
Stars: ✭ 2,956 (+282.41%)
Mutual labels:  x86, x86-64
cult
CPU Ultimate Latency Test.
Stars: ✭ 67 (-91.33%)
Mutual labels:  x86-64, x86
Remill
Library for lifting of x86, amd64, and aarch64 machine code to LLVM bitcode
Stars: ✭ 633 (-18.11%)
Mutual labels:  x86, x86-64
fasm
flat assembler 1 - reconstructed source history
Stars: ✭ 187 (-75.81%)
Mutual labels:  x86-64, x86
X86 Bare Metal Examples
Dozens of minimal operating systems to learn x86 system programming. Tested on Ubuntu 17.10 host in QEMU 2.10 and real hardware. Userland cheat at: https://github.com/cirosantilli/linux-kernel-module-cheat#userland-assembly ARM baremetal setup at: https://github.com/cirosantilli/linux-kernel-module-cheat#baremetal-setup 学习x86系统编程的数十个最小操作系统。 已在QE…
Stars: ✭ 3,985 (+415.52%)
Mutual labels:  x86, x86-64
binary-decompilation
Extracting high level semantic information from binary code
Stars: ✭ 55 (-92.88%)
Mutual labels:  x86-64, x86
Capstone
Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
Stars: ✭ 5,374 (+595.21%)
Mutual labels:  x86, x86-64
Labeless
Labeless is a multipurpose IDA Pro plugin system for labels/comments synchronization with a debugger backend, with complex memory dumping and interactive Python scripting capabilities.
Stars: ✭ 378 (-51.1%)
Mutual labels:  x86, x86-64
FEX
A fast usermode x86 and x86-64 emulator for Arm64
Stars: ✭ 650 (-15.91%)
Mutual labels:  x86-64, x86
The holy book of x86
A simple guide to x86 architecture, assembly, memory management, paging, segmentation, SMM, BIOS....
Stars: ✭ 577 (-25.36%)
Mutual labels:  x86, x86-64
SixtyFourBits
x64 Assembly Demo Framework
Stars: ✭ 21 (-97.28%)
Mutual labels:  x86-64, x86
Asmdb
Instructions database and utilities for X86/X64 and ARM (THUMB/A32/A64) architectures.
Stars: ✭ 258 (-66.62%)
Mutual labels:  x86, x86-64
fadec
A fast and lightweight decoder for x86 and x86-64 and encoder for x86-64.
Stars: ✭ 44 (-94.31%)
Mutual labels:  x86-64, x86
Limine
x86/x86_64 BIOS Bootloader
Stars: ✭ 288 (-62.74%)
Mutual labels:  x86, x86-64
x86-Assembly-Reverse-Engineering
🛠 Knowledge about the topic of x86 assembly & disassembly 🛠
Stars: ✭ 27 (-96.51%)
Mutual labels:  x86-64, x86
ria-jit
Lightweight and performant dynamic binary translation for RISC–V code on x86–64
Stars: ✭ 38 (-95.08%)
Mutual labels:  x86-64, x86
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+506.34%)
Mutual labels:  x86, x86-64
Unicorn
Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, X86)
Stars: ✭ 4,934 (+538.29%)
Mutual labels:  x86, x86-64

x86 Assembly Cheat

THIS REPO HAS MOVED TO: https://github.com/cirosantilli/linux-kernel-module-cheat#userland-assembly

All the most valuable content has already been moved: the bulk of the x86 instruction examples with assertions.

There is some stuff left here, e.g. 32-bit x86 and some useless prose. Maybe one day I'll migrate them, let's see.

No major new features are intended to be added here.

Notable advantages of LKMC repository include:

  • a single unified cross arch setup for ARM and x86_64, with cross arch concepts all nicely factored out
  • gem5 support. This is because we have integration of QEMU / gem5 / Buildroot setups already done there
  • parallel testing. Mostly because the build system there is Python, which is more flexible.
  • other stuff I can't remember right now. That setup just has a ton of features, and will continue to get more and more ;-)

The bulk of this repo had been written a long time ago, and so it was semi-crappy. All content that moved to LKMC was reviewed and improved.

In particular, the use of NASM was a bad choice from before I understood that GCC uses GNU GAS assembly by default. I intend to just migrate NASM examples to GAS, and let NASM die: if you really, want NASM, please checkout just before the migration. NASM devs are cool, but GCC wins.

However, the LKMC infrastructure is already working and completely superior, all that is left if to migrate some missing key concept examples there.

Old README

Build Status

x86 IA-32 and x86-64 userland minimal examples tutorial. Hundreds of runnable asserts. Nice GDB setup. IO done with libc, so OS portable in theory. NASM and GAS covered. Tested in Ubuntu 18.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples, ARM cheat at: https://github.com/cirosantilli/arm-assembly-cheat

  1. Getting started
  2. IA-32
    1. Base concepts
      1. Registers
        1. Segment registers
      2. Endianess
    2. Instructions
      1. Data transfer instructions
        1. Synchronization
        2. Stack data transfer instructions
          1. pusha
    3. Calling conventions
      1. cdecl
      2. cdecl examples
      3. stdcall
    4. Linux
      1. min
      2. hello_world
      3. hello_world_min
      4. stack_top.asm
      5. C from assembly
      6. Custom entry
      7. Custom entry GCC
  3. x86-64
    1. x86_64 general principles
      1. cmp sign extend
    2. x86_64 instructions
      1. movabs
    3. main
    4. x86_64 Linux system calls
    5. x86_64 calling convention
    6. C from assembly
      1. x86_64 C from assembly hello
      2. x86_64 printf
  4. Assemblers
    1. GAS
      1. GAS Linux hello world
      2. Symbol scope
        1. Local symbol
        2. Local label
      3. Current address
      4. Directives
        1. .ascii
        2. .asciz
        3. .equ
        4. .extern
        5. .gasversion.
        6. .global
        7. .print
        8. .type
      5. Macros
        1. .macro
          1. .altmacro
        2. .irp
      6. Bibliography
    2. NASM
      1. RAM
        1. Symbol colon
      2. local labels
      3. equ
      4. ptr
      5. current address
      6. Preprocessor
        1. %define
        2. %if
        3. %include
        4. comments
  5. Introduction
    1. How to learn
    2. Instruction sets
      1. Other architectures
        1. ARM
        2. Microcontrollers
      2. RISC vs CISC
        1. Microcode
      3. System vs application programming
      4. Flynn's Taxonomy
    3. Pros and cons of assembly
    4. Intel processor history
    5. Intel vs AT&T syntax
      1. intel2gas
    6. Implementations
    7. Extensions
    8. CPU architecture
      1. CPU Optimizations
      2. CPU bugs
      3. Cache
      4. Instruction level parallelism
        1. Pipeline
        2. Branch prediction
        3. Superscalar
        4. VLIW
        5. SIMT
      5. CPU benchmarks
  6. Containers
    1. ELF
      1. ELF Hello World Tutorial
  7. Dynamic libraries
    1. ld-linux.so
      1. ldd
  8. Compiler generated
  9. Binutils
    1. ld
      1. Linker scripts
    2. readelf
    3. objcopy
    4. objdump
    5. size
  10. Related tutorials
    1. x86 Instruction Encoding Tutorial
    2. C++ Cheat
  11. Bibliography
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].