Mivel volt pár szabad percem, összedobtam neked:
Teszt program erre: https://mcsiv.com/ldpreload_ioctl/test.c
shared object forrás erre: https://mcsiv.com/ldpreload_ioctl/ioctl_override.c
Lefordítani őket a következővel tudod:
$ gcc -Wall test.c -o test $ gcc -Wall -fPIC -shared -o ioctl_override.so ioctl_override.c -ldl
Részlegesen teszteltem, a HDIO_GET_IDENTITY nem működött sehol, ahol próbálni tudtam volna (most kizárólag virtuális környezetben vannak linuxok körülöttem).
A kód nem szép, nem "multiplatform" és az ABI-t is kőbaltával faragja, a teljes device identity-t sem tölti fel, de minimális célját ellátja és ha szükséges tovább tudod faragni:
# ./test IOCTL failed (Invalid argument) # LD_PRELOAD=./ioctl_override.so ./test Hard Disk Model: FakeModel Serial Number: 123456789