#!/bin/sh # 1. Inject a freshly built object file into a fresh executable. # Both use a dynamically loaded function. # 2. Detour execution from a function in the executable to a function # originating from the object file. # 3. Check if the new executable prints the expected changed output. source ./boilerplate.sh elfucli --input $BUILDDIR/putsmainsub \ --reladd $BUILDDIR/puts_noarg.o \ --detour sub,puts_noarg \ --output $BUILDDIR/putsmainsub-with-puts-noarg-detour test_check_retval $BUILDDIR/putsmainsub-with-puts-noarg-detour | grep -q "puts_noarg() is returning." test_check_retval