关于进程隐藏的一个BUG
本帖最后由 青梅绿茶 于 2024-10-4 12:49 编辑idea来源于 吧内大神给的思路
在vm上试了一试,确实可以,还写成了驱动当小工具用不放具体细节了 原理就是进程监控,然后改pid=4
这里 改notepad pid 确实成功隐藏
但是之后有个bug ,进程关了再开就会有eprocess 残留 windbg查看如下
猜测 因为pid为4 系统不会回收它的资源,但是里面handle object 都为0 只剩一个eprocess
我用了 MmCleanProcessAddressSpace Pspterminateprocess 这些清理函数都没用
后来逆了下 MmCleanProcessAddressSpace和pspterminateprocess 这些函数的细节,都是进入目标进程按部就班关闭各个线程
因为只剩eprocess 一个空壳里面没有thread 所以没法清理
本帖最后由 nudt312 于 2024-11-13 08:53 编辑
进程销毁的时候,是先摘链再销毁。改回id是摘链后的操作会id冲突,进程链中两个4号id,其中system4号id不能摘链,可能先遍历到这个,处理出错就返回了。 貌似新版的记事本有一些bug,之前学习WinAPI的时候,发现它经常会关不干净(关了一个,后台还有),其他程序没发现这个情况。不知是否有这方面原因? 那关闭程序时把pid再改回去呢? 感谢分享
LXGZJ237 发表于 2024-10-5 13:29
那关闭程序时把pid再改回去呢?
改了,还是一样,有残留
我通过一个链表保存的process原始信息,记录了原本的pid ,监控进程退出时会改回原来的pid LXGZJ237 发表于 2024-10-5 13:29
那关闭程序时把pid再改回去呢?
没看懂,但却是可以学习的 可以学习的,希望能详细讲解后面那部分 win7任务管理器好像无限出现进程,这个方法之前用过 感谢楼主的分享!{:1_921:} 学习一下 学习了,感谢楼主分享!