它应该是可能的,因为有些程序可以做这样的事情(比如Modorganizer).
问题是我不想使用文件系统过滤器驱动程序.我不想让我的应用程序的用户安装这样的东西.
正如我所看到的,Modorganizer通过几种方式完成这项工作,包括proxy.dll,hooks e.t.c.不知何故,它实现了几乎任何程序都可以从它启动的目标,Modorganizer将处理对特定目录的请求.
github上有源代码,但我真的不明白.这就是为什么我在这里问这个.
同样,Modorganizer实现了这一点,而无需反编译每个可能的程序,以了解注入的位置.它不使用系统过滤器.
(请解释你的弊端.否则我将来如何改进我的问题?)
解决方法 您需要的是修改进程中每个模块的导入表.看起来你提到的程序使用类似于这里描述的技术:https://www.codeproject.com/Articles/2082/API-hooking-revealed在“使用CreateRemoteThread()API函数注入DLL”部分.但是它不是使用远程线程,而是强制主程序线程完成它的工作(参见函数injectDLL):
https://github.com/TanninOne/modorganizer/blob/4a582e524dd012ed9d5fdb4f9c97aab22c8dac85/src/spawn.cpp
请注意,有一个标志CREATE_SUSPENDED传递给CreateProcess函数 – 这有助于它在主线程能够执行任何 *** 作之前存根所有函数.
它不是修补导入表,而是插入用汇编编写的存根(参见函数injectDLL):
https://github.com/TanninOne/modorganizer/blob/4a582e524dd012ed9d5fdb4f9c97aab22c8dac85/src/shared/inject.cpp
Jeffrey Richter在他的“windows via C/C++”一书中有一个关于如何修补导入表的好例子.您可以尝试查找和阅读完整的书籍,也可以在此查看代码:https://github.com/lattesir/WindowsViaCPP/blob/master/22-LastMsgBoxInfoLib/APIHook.cpp
但是你的程序可能看起来像任何反病毒软件的病毒.
@H_419_46@ 总结以上是内存溢出为你收集整理的C#/ C:启动一个应用程序并处理它对系统的I / O调用全部内容,希望文章能够帮你解决C#/ C:启动一个应用程序并处理它对系统的I / O调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)