Esto es lo que hace un Rootkit, idealmente en modo Kernel, la idea es simple: interceptar funciones del S.O. y modificar los resultados retornados a los programas (y/o modulos de modo Kernel).
Por ejemplo interceptando FindNextFile en el campo cFileName de la estructura WIN32_FIND_DATA estara el nombre del archivo y podras retornar al programa un error (o mejor llamar a la funcion de nuevo asi retornas el siguiente archivo en la lista y simplemente saltas el tuyo).
PD. Insisto en que siempre es mejor hacerlo en modo Kernel y te aclaro que no es algo facil en ningun caso (en modo Usuario tenes que cargar una DLL en todos los procesos que quieras engañar).
Por ejemplo interceptando FindNextFile en el campo cFileName de la estructura WIN32_FIND_DATA estara el nombre del archivo y podras retornar al programa un error (o mejor llamar a la funcion de nuevo asi retornas el siguiente archivo en la lista y simplemente saltas el tuyo).
PD. Insisto en que siempre es mejor hacerlo en modo Kernel y te aclaro que no es algo facil en ningun caso (en modo Usuario tenes que cargar una DLL en todos los procesos que quieras engañar).