首页
社区
课程
招聘
[求助]PsCreateSystemThread Hook过程中传入的参数结构
2010-3-13 21:45 5632

[求助]PsCreateSystemThread Hook过程中传入的参数结构

2010-3-13 21:45
5632
某驱动代码:
ThreadHook proc
            pushad
            mov eax,dword ptr [esp+18h+20h]
            cmp byte ptr [eax-4],65h ;tessafe 'e'== 65h
jne @F
       
            cli
        mov eax, cr0
        and eax,0fffeffffh
        mov cr0, eax
        mov eax,dword ptr [esp+18h+20h]
        mov threadproc,eax
        mov ecx,eax
        and ecx,0ffh;取TX驱动地址最后一个byte
------------
ThreadHook是在系统PsCreateSystemThread地方Hook跳过来的 :
            pushad
之后 栈里应该是这样:
esp+20h call PsCreateSystemThread的返回地址
esp+20h+4 PsCreateSystemThread函数第一个参数
esp+20h+18h PsCreateSystemThread函数第六个参数,也就是StartRoutine的地址

cmp byte ptr [eax-4],65h ;tessafe 'e'== 65h

这句就整不明白了

希望得到朋友们指点!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fixfix 2010-3-14 00:16
2
0
这个偶最有发言权了
mov eax,dword ptr [esp+18h+20h] // eax == threadaddress
cmp byte ptr [eax-4],65h ;tessafe 'e'== 65h // threadaddress ↑ have a string heihei  this old tessafe pass fangfa
雪    币: 154
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
icefall 1 2010-3-14 00:31
3
0
[QUOTE=fixfix;775254]这个偶最有发言权了
mov eax,dword ptr [esp+18h+20h] // eax == threadaddress
cmp byte ptr [eax-4],65h ;tessafe 'e'== 65h // threadaddress ↑ have a string heihei ...[/QUOTE]

谢谢
一个字节会不会误判?
是不是可以这样理解:
保护用sys创建线程 对hook的地方进行校验 65h是它创建线程入口的特征
对于早期的tessafe 是不是可以用调试器下断点断在threadaddress 入口处

tcprotect 也有4个inline hook,手工恢复它会重新勾上,bpx pscreatesystemthread 未果
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fixfix 2010-3-14 01:12
4
0
你应该去用IDA看看线程地址上面有一串很明显的字符
话说特征码不在多少,可以定位就可以,一字节能定位的东西,就不要2个字节
新版本的据我所知没有多少变化,就改变下编程方法,呵呵 分配一下内存
用指针指一下

太强了,你可以手工恢复了,不蓝死你啊
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
escript 2010-3-15 17:57
5
0
惊现Y3的PASS
游客
登录 | 注册 方可回帖
返回