阅读:5179回复:21
请教为什么恢复了CNNIC的INLINE-HOOK却仍然无法删除Root下的键?
为什么恢复了CNNIC的INLINE-HOOK却仍然无法删除Enum\Root下的注册键?
其它的注册键恢复后到是可以删除了~~如Services下面的可以删除~ 偶是先恢复了它HOOK的SSDT,又恢复了对NtDeleteKey、NtDeleteValueKey的INLINE-HOOK(其它无关的INLINE_HOOK没有恢复),但删除Enum\Root下面的键时依旧返回错误~ 请高手们指点,它还搞了什么花样呢? 用Windbg顺着NtDeleteKey一直反汇编下去,除了开头的JMP修改外,也的确没发现其它的HOOK痕迹~ 另外,恢复NtCreateKey后,过几秒种就会蓝屏~蓝在了NtCreateKey函数内,不知啥原因。 |
|
沙发#
发布于:2007-02-08 17:57
ZwOpenKey, NtOpenKey没恢复?
|
|
|
板凳#
发布于:2007-02-08 18:40
嘿,忘记说了,恢复NtOpenKey跟NtCreateKey一样,过上几秒种就蓝~
|
|
地板#
发布于:2007-02-08 18:43
直接调用内部的CM系列函数,或者用DARKSPY删除.
|
|
|
地下室#
发布于:2007-02-08 19:07
这是恢复前取得:
lkd> u nt!NtOpenKey nt!NtOpenKey: 805694d5 e9f5482e79 jmp f984ddcf 805694da fd std 805694db 4c dec esp 805694dc 0fe011 pavgb mm2,mmword ptr [ecx] 805694df e8aea5f7ff call nt!_SEH_prolog (804e3a92) 805694e4 33f6 xor esi,esi 805694e6 33db xor ebx,ebx 805694e8 895dd8 mov dword ptr [ebp-28h],ebx _____________________________________________________________ 下面是尸体检报告: BugCheck 8E, {c0000005, 805694dc, f9caacdb, 0} Probably caused by : ntoskrnl.exe ( nt!NtOpenKey+7 ) Followup: MachineOwner --------- kd> u 805694dc nt!NtOpenKey+0x7: 805694dc 0fe011 pavgb mm2,mmword ptr [ecx] 805694df e8aea5f7ff call nt!_SEH_prolog (804e3a92) 805694e4 33f6 xor esi,esi 805694e6 33db xor ebx,ebx 805694e8 895dd8 mov dword ptr [ebp-28h],ebx 805694eb 8975e4 mov dword ptr [ebp-1Ch],esi 805694ee 668975dc mov word ptr [ebp-24h],si 805694f2 33c0 xor eax,eax kd> u f9caacdb f9caacdb 64ad lods dword ptr fs:[esi] f9caacdd caf9dc retf 0DCF9h f9caace0 94 xchg eax,esp f9caace1 56 push esi f9caace2 80000d add byte ptr [eax],0Dh f9caace5 dbbafce70600 fstp tbyte ptr [edx+6E7FCh] f9caaceb 80a85c6b81c8a4 sub byte ptr [eax-377E94A4h],0A4h f9caacf2 3be1 cmp esp,ecx kd> u nt!NtOpenKey nt!NtOpenKey: 805694d5 6894000000 push 94h 805694da fd std 805694db 4c dec esp 805694dc 0fe011 pavgb mm2,mmword ptr [ecx] 805694df e8aea5f7ff call nt!_SEH_prolog (804e3a92) 805694e4 33f6 xor esi,esi 805694e6 33db xor ebx,ebx 805694e8 895dd8 mov dword ptr [ebp-28h],ebx +++++++++++++++++++++++++++++++++++ 呵呵~~主要是想学习嘛~~想弄明白为何会这样子~~偶也看了看CmDeletekey,没发现有被HOOK的痕迹~ 对了,请老大指点一下,Cm*系统的函数如何调用啊?偶从没直接用过~~哪里有相关资料给个链接也行,谢谢了~~ |
|
5楼#
发布于:2007-02-08 19:53
你的恢复有问题。。。
805694d5 e9f5482e79 jmp f984ddcf 805694da fd std 805694db 4c dec esp 805694dc 0fe011 pavgb mm2,mmword ptr [ecx] 这几条指令都需要恢复 |
|
|
6楼#
发布于:2007-02-08 20:57
CNNIC病毒感染了前面7个左右的字节,我的驱动恢复前16字节,呵呵,楼主要把CNNIC改过的全恢复掉哦
CM系列函数貌似需要暴力搜索~~为了稳定还不用,呵呵这个版里有个U88的驱动,那里面就有搜索CmEnumerateKey 的代码, |
|
|
7楼#
发布于:2007-02-08 22:50
哦呵~原来这样啊~~汗~`一直以为就感染了前5个字节呢~~
谢谢各位老大 ^_^ CM系列的学习学习,多学点东西总是好的~~能不能自然是不用了~~去找U88瞧瞧去~~ 还要麻烦指点一下,调用CM函数时的参数有没有化呢?有这一方面的资料么?在NativeAPi的资料中好像并没有见到的有关CM开头函数的,如果想查询调用格式及参数说明应该在哪里找资料呢? |
|
8楼#
发布于:2007-02-08 23:01
CM系列是未导出的函数,IDA一下看参数什么的啦
|
|
|
9楼#
发布于:2007-02-09 08:31
呵呵,谢谢~~
在各位老大的指点下,已经可恢复并删除CNNIC的各项注册表值及结束应用层进程了~~ 可以把Services下的删除再将Root下的删除~再将Run下的删除~汗,该删除的好像都删除了,可一重启那该死的东西就又出来了~还真够执着的~~ |
|
10楼#
发布于:2007-02-09 08:37
没删干净,cnnic会克隆自己的驱的。。。
|
|
|
11楼#
发布于:2007-02-09 09:34
是,好像每次重启,驱动文件字都不同~~汗~~一个软件做成这样子,还敢说偶不是流氓~也真让人佩服~~
偶在仔细的找一找,谢谢指点~ |
|
12楼#
发布于:2007-02-09 09:49
偶的亲娘啊~~总算给清掉了~~CNNIC在这一点上做的还算不错~~他的注册DLL都提供了卸载~呵呵,驱动就那么点地方,很容易就找遍了,但要找DLL这可不容易~~偶把他的DLL文件挨个反注册一下子,呵~~还好搞定它了。不知道,下一个版本它是不是就不提供DLL卸载了~
最后感谢各位老大的指点~~让偶学到不少东西~~ |
|
13楼#
发布于:2007-02-09 10:20
汗,美了还没两分钟,就又哭了~~~清倒是真的给清掉了,可机器简直就没办法用了,进入桌面的时间长的能抽支烟~进去后网络还不通~~逼得偶不得不把它又给恢复了~~丢人呐~~
~~它咋就那么霸道啊~~ |
|
14楼#
发布于:2007-02-09 10:59
.....它的主驱动和影子驱动到底你停了没。。。。
其实不用那么麻烦啦,你先恢复掉native api的ssdt/inline hook,fsd的filter,dispatch routine/irp inline hook,再找到其主驱动及所有运行着的影子驱动,IoUnRegisterShutdownNotfication之,接下来就删文件、删注册表吧,重启动后它就彻底挂啦 |
|
|
15楼#
发布于:2007-02-09 11:10
晕死~
我采取的手段,装SSM,然后拒绝注册表变动和驱动 |
|
|
16楼#
发布于:2007-02-09 11:47
vxk晕啥。。。
|
|
|
17楼#
发布于:2007-02-09 12:12
呵呵,终于搞定了~~偶是又清了一遍,然后把文件关联及WinSock2键下的内容恢复了一下儿就行了,估计是我反注册某DLL时把弄坏了注册表~
另外请问:调用IoUnregisterShutdownNotification 时用到的那个参数是不是CNNIC的驱动对像?就是那个PDEVICE_OBJECT ?不好意思,偶没用过这个~~偶清除时,都是把该删除的都删了后,直拉Reset~ |
|
18楼#
发布于:2007-02-09 12:47
Kernel-Mode Driver Architecture: Windows DDK
IoUnregisterShutdownNotification The IoUnregisterShutdownNotification routine removes a registered driver from the shutdown notification queue. VOID IoUnregisterShutdownNotification( IN PDEVICE_OBJECT DeviceObject ); Parameters DeviceObject Pointer to the driver’s device object. Return Value None Headers Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h. Comments IoUnregisterShutdownNotification can be called by a driver only if that driver previously called IoRegisterShutdownNotification or IoRegisterLastChanceShutdownNotification with the given DeviceObject. This routine is usually called from a driver’s Unload routine. Calling IoUnregisterShutdownNotification cancels all shutdown notifications that have been registered for the given DeviceObject. Callers of IoUnregisterShutdownNotification must be running at IRQL = PASSIVE_LEVEL. See Also IoRegisterShutdownNotification, IoRegisterLastChanceShutdownNotification Send feedback on this topic. / Built on Thursday, January 16, 2003 See Also IoRegisterShutdownNotification, IoRegisterLastChanceShutdownNotification |
|
|
19楼#
发布于:2007-02-09 13:40
谢谢~
|
|
上一页
下一页