输入法、词霸、超级卸载,继续娱乐

2010-11-5 Nie.Meining Debug

输入法、词霸、超级卸载,继续娱乐
上午看到输入法和词霸也不甘寂寞掺合进来凑热闹,很有意思:
http://tech.qq.com/a/20101105/000198.htm
刚刚又看到超级巡警出了这样一个东西,娱乐气息愈发浓厚了:
http://www.sucop.com/
“近日,我们接到众多网友投诉,一些产品无法进行干净卸载删除,应广大网友要求,我们推出通用软件卸载工具。目前第一版本仅支持360产品。”
下载下来看了看,一个驱动,一个dll,一个exe。把驱动拖进IDA简单看了看,功能很简单,在IOCTL里接收应用层传入的文件名,然后发IRP删文件。

.text:0001165B                 push    1               ; ChargeQuota

.text:0001165D                 push    eax             ; StackSize

.text:0001165E                 call    ds:IoAllocateIrp

.text:00011664                 mov     esi, eax

.text:00011666                 cmp     esi, ebx

.text:00011668                 jz      loc_116F8

.text:0001166E                 push    ebx             ; State

.text:0001166F                 push    ebx             ; Type

.text:00011670                 lea     eax, [ebp+Event]

.text:00011673                 push    eax             ; Event

.text:00011674                 call    ds:KeInitializeEvent

.text:0001167A                 mov     [ebp+var_1], 1

.text:0001167E                 mov     eax, [esi+60h]

.text:00011681                 sub     eax, 24h

.text:00011684                 mov     dword ptr [eax+1Ch], offset sub_114CA

.text:0001168B                 mov     byte ptr [eax+3], 0E0h

.text:0001168F                 lea     ecx, [ebp+Event]

.text:00011692                 mov     [eax+20h], ecx

.text:00011695                 lea     eax, [ebp+var_1]

.text:00011698                 mov     [esi+0Ch], eax

.text:0001169B                 lea     eax, [ebp+var_10]

.text:0001169E                 mov     [esi+28h], eax

.text:000116A1                 mov     eax, [ebp+FileObject]

.text:000116A4                 mov     [esi+64h], eax

.text:000116A7                 call    ds:KeGetCurrentThread

.text:000116AD                 mov     [esi+50h], eax

.text:000116B0                 mov     eax, [esi+60h]

.text:000116B3                 mov     [esi+20h], bl

.text:000116B6                 sub     eax, 24h

.text:000116B9                 mov     byte ptr [eax], 6

.text:000116BC                 mov     [eax+14h], edi

.text:000116BF                 mov     ecx, [ebp+FileObject]

.text:000116C2                 mov     [eax+18h], ecx

.text:000116C5                 mov     dword ptr [eax+4], 1

.text:000116CC                 mov     dword ptr [eax+8], 0Dh

.text:000116D3                 mov     ecx, [ebp+FileObject]

.text:000116D6                 mov     [eax+0Ch], ecx

.text:000116D9                 mov     edx, esi        ; Irp

.text:000116DB                 mov     ecx, edi        ; DeviceObject

.text:000116DD                 call    ds:IofCallDriver

.text:000116E3                 push    ebx             ; Timeout

 

其实卸360方法很多的,比如直接把钩子摘了(摘第二段跳,360在KiFastCallEntry+0xe5的位置进行了两段跳hook,第二段没被守护)然后把文件删完了事。

发表评论:

Powered by emlog