This commit is contained in:
pancake 2024-09-27 03:16:30 +02:00
parent 88e2ff3b1b
commit 0738d61eb3
2 changed files with 93 additions and 2 deletions

View File

@ -6,10 +6,13 @@
#include <r_main.h>
static int show_help(int v) {
printf ("Usage: rapatch2 [-R] [origfile] ([patchfile])\n");
printf ("Usage: rapatch2 [-p N] [-sv] [-R] [origfile] ([patchfile])\n");
if (v) {
printf (
" -p N patch level, skip N directories\n"
" -R reverse patch\n"
" -s be silent\n"
" -v show version\n"
);
}
return 1;
@ -20,15 +23,25 @@ R_API int r_main_rapatch2(int argc, const char **argv) {
int o;
bool reverse = false;
bool silent = false;
int patchlevel = 0;
r_getopt_init (&opt, argc, argv, "hR");
r_getopt_init (&opt, argc, argv, "hRvsp:");
while ((o = r_getopt_next (&opt)) != -1) {
switch (o) {
case 'h':
return show_help (1);
case 's':
silent = true;
break;
case 'p':
patchlevel = atoi (opt.arg);
break;
case 'R':
reverse = true;
break;
case 'v':
return r_main_version_print ("rapatch2", 0);
default:
return show_help (0);
}
@ -47,6 +60,12 @@ R_API int r_main_rapatch2(int argc, const char **argv) {
if (reverse) {
R_LOG_TODO ("reverse patch not yet supported");
}
if (silent) {
R_LOG_TODO ("silent not yet supported");
}
if (patchlevel) {
R_LOG_TODO ("patchlevel not yet supported");
}
const char *r2argv[5] = {
"radare2",
"-qwP",

72
man/rapatch2.1 Normal file
View File

@ -0,0 +1,72 @@
.TH RAPATCH2 1 "rapatch2 tool" "Sep 27, 2024"
.SH NAME
rapatch2 - binary patching utility
.SH SYNOPSIS
.B rapatch2
[-p #] [-R] file patch
.SH DESCRIPTION
rapatch2 is a tool from the radare2 suite designed for binary patching code and data.
.PP
Human friendly text format to apply patches to binary files.
.Pp
It supports a wide range of formats and features, including architecture and
bits specification, delta patching, graph patching, and more.
.Pp
Those patches must be written in files and the syntax looks like the following:
.RS
.nf
^# -> comments
. -> execute command
! -> execute command
OFFSET { code block }
OFFSET "string"
OFFSET 01020304
OFFSET : assembly
+ {code}|"str"|0210|: asm
.fi
.RE
.SH OPTIONS
.TP
.B -h
Show this help message
.TP
.B -R
Reverse patch
.TP
.B -p [num]
Skip num directories from patch file
.TP
.B -s
Be silent
.TP
.B -v
Show version string
.SH USAGE EXAMPLES
.TP
.B "Comparing two binaries"
radiff2 -u bin1 bin2 > patch
rapatch2 -p 1 < patch
.TP
.B "Patch only one file"
rapatch2 bin1 patch
.SH COMMAND IN R2
See the -p flag and command.
.SH SEE ALSO
radare2(1)
.Sh WWW
.Pp
https://www.radare.org/
.SH AUTHOR
pancake <pancake@nopcode.org>