Patch binary file using IDA signatures and defined replacement bytes in YAML.

Overview

fabricbin

Patch binary file using IDA signatures and defined replacement bytes in YAML.

Install:

cargo install --git https://github.com/makindotcc/fabricbin

Usage:

  1. Modify config.yaml (any filename)
  2. fabricbin config.yaml (any filename, by default "config.yaml" is used)
  3. Input file will be replaced with

Example configuration:

# input file
input_file: './chrome/118.0.5993.71/chrome.dll'
# Optional output file path. If not defined then input file is used and
# backup file (of input file) with suffix ".bak" is created.
output_file: './chrome/118.0.5993.71/chrome.dll'
# Apply following patches to input file
patch:
  # Following patch will replace FIRST occurrence of "sig".
  # Example data before:
  # Before: 53 48 83 EC 00 48 8B 22 33 44 55...
  # After:  48 C7 C0 00 00 00 00 C3 33 44 55...
  - name: 'blink::Navigator::webdriver' # optional, exists for "docs"/debugging purposes (when signature is not found)
    # IDA style signature to be replaced with bytes from field 'with'
    sig: '53 48 83 EC ? 48 8B ? ? ? ? ? 48 ? ? 48 ? ? ? 28 B3 01 80 3D ? ? ? ? 00 74 ? 48 8b ? ? ?'
    # New byte list that will replace the bytes in the signature
    with:
      - '48 c7 c0 00 00 00 00' # mov rax, 0x00
      - 'c3'                   # ret
    # optional offset relative to first signature byte
    # In this example our "with" (48 c7...) will be replaced at index of sig first byte (0x53 0x48 0x83...)
    with_offset: 0
You might also like...
hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes
hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes

hexyl is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).

A terminal UI to edit bytes by the nibble.
A terminal UI to edit bytes by the nibble.

heh The HEx Helper is a cross-platform terminal UI used for modifying file data in hex or ASCII. It aims to replicate some of the look of hexyl while

A rust crate to view a structure as raw bytes (&[u8])

rawbytes A Rust crate to view a structure as a plain byte array (&[u8]). Super simple. Tiny. Zero dependencies. This is a safer interface to slice::fr

A rust binary that will flip one or more bits of a file (mostly for messing with images for fun).
A rust binary that will flip one or more bits of a file (mostly for messing with images for fun).

file-bitflipper A rust binary that will flip one or more bits of a file (mostly for messing with images for fun). Example (bitflipped bentley) Usage $

Determine which CPU architecture is used in a binary file.

cpu_rec_rs Determine which CPU architecture is used in a binary file. Example: $ cpu_rec_rs /bin/bash /usr/lib/firmware/rtlwifi/rtl8821aefw* Loading c

A drop-in replacement for `dapp` and `seth` in Rust

dapptools.rs Rust port of DappTools dapp example Usage Run Solidity tests Any contract that contains a function starting with test is being tested. Th

Simpler and more powerful replacement for `find`

FindFile (FF) An simple, ergonomic, and powerful replacement for find. Note: this repo is under active development The syntax is (mostly) figured out,

exa is a modern replacement for ls.
exa is a modern replacement for ls.

exa exa is a modern replacement for ls. README Sections: Options β€” Installation β€” Development exa is a modern replacement for the venerable file-listi

zoxide is a blazing fast replacement for your cd command
zoxide is a blazing fast replacement for your cd command

zoxide A smarter cd command for your terminal zoxide is a blazing fast replacement for your cd command, inspired by z and z.lua. It keeps track of the

Owner
makin
moze w kasynie spotkasz mnie πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©πŸ»β€πŸ¦³β€πŸ‘©
makin
Just in time Oxidation. A little experimentation with inkwell and copy-and-patch compilation

Experimental Copy-and-Patch compiler backend written in Rust This is supposed to become an experimental compiler backend based on Copy and Patch to be

Michael Zinsmeister 4 Feb 27, 2024
Rust library crate providing utility functions for diff and patch of slices

This crate provides the Change enum as an abstraction for diff::Result, lcs_diff::DiffResult, and wu_diff::DiffResult; the diff_changes(), diff_diff()

qtfkwk 5 Oct 19, 2022
Shellfirm - Intercept any risky patterns (default or defined by you) and prompt you a small challenge for double verification

shellfirm Opppppsss you did it again? ?? ?? ?? Protect yourself from yourself! rm -rf * git reset --hard before saving? kubectl delete ns which going

elad 652 Dec 29, 2022
omekasy is a command line application that converts alphanumeric characters in your input to various styles defined in Unicode.

omekasy is a command line application that converts alphanumeric characters in your input to various styles defined in Unicode. omekasy means "dress up" in Japanese.

null 105 Nov 16, 2022
Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands.

Dash Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands. Features Quick Initialization: Initialize the c

Kunal Bagaria 4 Nov 7, 2023
This CLI utility facilitates effortless manipulation and exploration of TOML, YAML, JSON and RON files.

???????? This CLI utility facilitates effortless manipulation and exploration of TOML, YAML, JSON and RON files.

Moe 3 Apr 26, 2023
A simple CLI for combining json and yaml files

A simple CLI for combining json and yaml files

Avencera 16 Jul 4, 2022
YAML(ish) - Terminal UI framework based on templates focused on simplicity

A YAML(ish) based terminal GUI framework for- and by Rust, focussed on making it quick and easy to create a functional UI for an app or game. Based on Crossterm and inspired by Kivy.

null 27 Dec 18, 2022
Encode and decode dynamically constructed values of arbitrary shapes to/from SCALE bytes

scale-value Β· This crate provides a Value type, which is a runtime representation that is compatible with scale_info::TypeDef. It somewhat analogous t

Parity Technologies 15 Jun 24, 2023
Base 32 + 64 encoding and decoding identifiers + bytes in rust, quickly

fast32 Base32 and base64 encoding in Rust. Primarily for integer (u64, u128) and UUID identifiers (behind feature uuid), as well as arbitrary byte arr

Chris Rogus 9 Dec 18, 2023