c – 隐藏其他程序的文件
我需要让一个文件不出现在另一个程序中.例如,当另一个程序获取文件夹中的文件列表时,我希望一个特定的程序不显示.我正在注入一个DLL,我的代码将从该DLL中运行,我想在文件系统上隐藏DLL文件.我使用的是Microsoft Visual C 2010和
Windows 7.
解决方法
是的,正如您所提到的,您需要截取文件/文件夹枚举API并从枚举结果中过滤掉特定的文件/文件夹,以便“隐藏”该文件/文件夹.这可以在用户模式或内核模式下完成.
用户模式:用户模式挂钩涉及DLL注入.你可以在很多地方挂钩: > IAT挂钩可执行文件:找出目标进程的导入地址表中的条目FindXxx,并用注入的DLL中存在的trampoline函数的地址覆盖它. 通常,用户模式往往变得“丑陋”(难以管理),因为如果您需要系统范围的挂钩(或至少进入Explorer.exe或目标应用程序),则需要将DLL注入所有正在运行的进程.许多应用程序(如安全软件)都具有检测和拒绝DLL注入的保护机制. 内核模式:这涉及编写驱动程序.同样,在内核模式中,有许多地方可以安装钩子: > SSDT挂钩:通过在驱动程序中使用trampoline函数的地址覆盖相应的SSDT索引,为所需的ZwXxx API(在本例中为ZwQueryDirectoryFile)安装SSDT挂钩. 内核模式钩子往往更清洁,因为它们通常安装在一个“集中位置”.但是,您应该非常小心,因为驱动程序代码中的小错误/错误处理最终会导致BSOD. PS:有许多钩子库/框架可用于简化编写代码的工作.一些流行的是: PPS:在未经用户同意的情况下使用此类技术隐藏文件/文件夹可能是一个可疑的操作,并且可能会出现问题(请记住Sony DRM保护软件问题?;)).这就是rootkit的作用!有许多用户模式和内核模式rootkit使用上面提到的技术来隐藏文件/文件夹.有各种anti-rootkit软件可用于检测和恢复上述各种挂钩.许多反病毒软件在检测到类似rootkit的行为时会引发一个标志(如API挂钩,隐藏文件,SSDT挂钩等) 资源很少: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |