mirror of
https://codeberg.org/andersonarc/reliant-system.git
synced 2025-11-14 21:30:36 -05:00
24 lines
755 B
Bash
24 lines
755 B
Bash
#!/usr/bin/sh
|
|
|
|
# Create a new file to be patched
|
|
binary=/usr/lib/systemd/systemd-volatile-root
|
|
target=/usr/lib/systemd/systemd-volatile-root.reliant-profiling
|
|
cp $binary $target
|
|
|
|
# We must NOP calls to umount and rmdir
|
|
hex_offsets=$(objdump -d "$binary" | grep -E 'call.*(umount|rmdir)' | awk '{ print $1 }' | tr -d ':')
|
|
for hex_offset in $hex_offsets; do
|
|
dec_offset=$(perl -le "print hex(\"$hex_offset\")")
|
|
printf '\x90\x90\x90\x90\x90' | dd of="$target" bs=1 seek=$dec_offset conv=notrunc
|
|
done
|
|
|
|
# Verify the patch has succeeded
|
|
for hex_offset in $hex_offsets; do
|
|
echo -n "$hex_offset: "
|
|
opcode=$(objdump -d "$target" | grep $hex_offset | awk '{ print $2 }')
|
|
if [ "$opcode" -eq 90 ]; then
|
|
echo "OK"
|
|
else
|
|
echo "FAIL"
|
|
fi
|
|
done
|