( Mcsiv | 2024. 11. 27., sze – 02:55 )

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