能力值:
( LV2,RANK:10 )
|
-
-
2 楼
直接进程回调 拦截到就结束
|
能力值:
( LV13,RANK:240 )
|
-
-
3 楼
minifilter createfile 返回失败
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这个控制粒度太大了,需要控制到所有PE文件
包括sys,dll,ocx等
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这个需要判断PE文件格式吧?
而且效率估计比较低,
|
能力值:
( LV5,RANK:70 )
|
-
-
6 楼
PsSetLoadImageNotifyRoutine 判断进程是不是64还是32,然后定位到程序入口点,然后直接写C3即可!
|
能力值:
( LV13,RANK:240 )
|
-
-
7 楼
为何需要判断格式?
文件名判断不行吗
|
能力值:
( LV13,RANK:240 )
|
-
-
8 楼
你这样不能针对进程做。一个C3 重启电脑之前 所有的程序都无法加载这个模块。除非你再次改回来
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
PsSetLoadImageNotifyRoutine 也可以!但是要注意重入问题
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你把物理内存给改了
|
能力值:
( LV13,RANK:240 )
|
-
-
11 楼
minifilter已经可以做了。
image回调最好实现windows的COPYONWRITE做,那样不会影响其他进程。
可以通过入口点的地址计算出页面的PTE 修改PTE标记位的第9位打开copyonWrite开关 就行了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
minifilter 至少需要通过标记判断是否是执行文件,否则文件太大,
这种方案我持保留意见,感觉和文件加载拦截关系不大,可否有参考代码?
|
能力值:
( LV13,RANK:240 )
|
-
-
13 楼
CreateFile进来的时候 标志位如果是将这个映像用于执行 会带有 PAGE_EXECUTE(FILE_EXECUTE 具体不记得是哪个) 带有这个标记都可用于可执行,根本不需要读取文件去判断类型。
从自带的参数得到文件是否为PE文件。然后再按照你的规则判断过滤
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
改pet不够优雅
优雅的方法是把锁解开直接用writememory的api 然后在把锁上回去
|
能力值:
( LV13,RANK:240 )
|
-
-
15 楼
是的,这个方法也是copyonwrite机制。之前我也是卡在这个死锁了。
|
能力值:
( LV5,RANK:70 )
|
-
-
16 楼
拦截dll,入口直接写入
return 0
也就是:
xor eax,eax
ret
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
这个问题当初郁闷死我了,从头逆过一遍才看出这个玄妙
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
还是没灵感啊,有没有可参考的资源,在此谢过
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
堆栈都不平
BOOL APIENTRY DllMain(HANDLEhModule, DWORD ul_reason_for_call, LPVOIDlpReserved)
最后应该是ret 0xC才对
|
能力值:
( LV5,RANK:70 )
|
-
-
20 楼
恩,对 多谢指正,忘记看调用约定了
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
如果是DLL里面,没有入口点的情况(入口点地址为0,无DllMain),该如何处理呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
前面几步已经办到了,就剩下最后一步 “直接写C3”,挣扎中。
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
现在已经拦截成功,写入口点成功,但是再次启动后,入口点一直被改写,即使关闭驱动,同一个dll一直无法记载,不知道是什么原因、
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
确实是这样 之前听说好像是文件被映射一次 以后就不用映射的了
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
可以先保存原来的代码,创建个线程,一秒钟再改回来。就不会影响下次加载。
|
|
|