Du kannst ein Tool wie z.B. Hopper oder radare2 benutzen um die Adresse
im Binary zu finden, und dann koenntest du die entsprechende Stelle
einfach mit einem Hexeditor bearbeiten, speichern, fertig.
Hopper (gibt auch eine Testversion):
https://www.hopperapp.com/
radare2:
https://radare.org/r/index.html
Hexeditor deiner Wahl, ich habs gerade mal mit Bless gemacht.
(schlechtes) Beispiel:
1 | #include <stdio.h>
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | int x = 42;
|
6 |
|
7 | printf("x ist %i\n", x);
|
8 |
|
9 | return 0;
|
10 | }
|
Compiliert mit:
1 | $ gcc -Wall -Wextra -O0 -o main test.c
|
Siehe Bilder:
Hopper aufmachen und Binary reinziehen, die entsprechende Zeile
markieren (hopper_01.png) und dann im Menue "Window" auf Hexeditor
umschalten. Die vorher markierte Zeile ist jetzt gestrichelt umrandet
(hopper_02.png). Man kann die entsprechende Stelle hier bearbeiten und
dann ueber "File -> Produce new Executable" ein neues Binary erstellen
lassen, welche die Aenderung enthaelt.
Ich glaube das bearbeiten und neu erstellen geht in der
Hopper-Testversion nicht (Vollversion kostet ~100 Euro).
Aber du hast jetzt eine Bytefolge, nach der du mit einem Hexeditor
suchen kannst. Stelle bearbeiten, speichern und fertig. :)
Die entsprechende Stelle findet man aber auch mit objdump, siehe mein
Vorposter:
René H. schrieb:
> objdump -S --disassemble helloworld > helloworld.dump
Ab da ist das vorgehen dasselbe:
Stelle mit Hexeditor suchen, aendern, fertig. :)