首页
社区
课程
招聘
[求助]请高手看下这是个什么函数.非常奇怪
发表于: 2007-9-10 15:08 8154

[求助]请高手看下这是个什么函数.非常奇怪

2007-9-10 15:08
8154
跟踪有东西在调用这个函数在创建线程,而这个函数是kernel32.dll里的函数,好象并没导出.没见过.

7C80B4D4  /$  6A 10         PUSH 10
7C80B4D6  |.  68 18B5807C   PUSH kernel32.7C80B518
7C80B4DB  |.  E8 EB6FFFFF   CALL kernel32.7C8024CB
7C80B4E0  |.  8365 FC 00    AND DWORD PTR SS:[EBP-4],0
7C80B4E4  |.  64:A1 1800000>MOV EAX,DWORD PTR FS:[18]
7C80B4EA  |.  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX
7C80B4ED  |.  8178 10 001E0>CMP DWORD PTR DS:[EAX+10],1E00
7C80B4F4  |.  75 0F         JNZ SHORT kernel32.7C80B505
7C80B4F6  |.  803D 0830887C>CMP BYTE PTR DS:[7C883008],0
7C80B4FD  |.  75 06         JNZ SHORT kernel32.7C80B505
7C80B4FF  |.  FF15 E812807C CALL DWORD PTR DS:[<&ntdll.CsrNewThread>>;  ntdll.CsrNewThread
7C80B505  |>  FF75 0C       PUSH DWORD PTR SS:[EBP+C]
7C80B508  |.  FF55 08       CALL DWORD PTR SS:[EBP+8]                ;  
7C80B50B  |.  50            PUSH EAX                                 ; /ExitCode = 1
7C80B50C  \>  E8 98170000   CALL kernel32.ExitThread                 ; \ExitThread

Ctrl+a分析后 有两个地方跳过来
第一处
7C810856   .  33ED          XOR EBP,EBP
7C810858   .  53            PUSH EBX
7C810859   .  50            PUSH EAX
7C81085A   .  6A 00         PUSH 0
7C81085C   .^ E9 73ACFFFF   JMP kernel32.7C80B4D4

第二处
7C825BAD   .  64:A1 1000000>MOV EAX,DWORD PTR FS:[10]
7C825BB3   .  FFB0 B8000000 PUSH DWORD PTR DS:[EAX+B8]
7C825BB9   .  FFB0 C4000000 PUSH DWORD PTR DS:[EAX+C4]
7C825BBF   .  E8 1059FEFF   CALL kernel32.7C80B4D4

而在这两处下断点时 发现堆栈尽然是空的! 没有任何返回地址在堆栈里.

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

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶个先~~  用这样的方式建立新线程 还是我第一见到,哎~ 小第才疏学浅 搞不明白~~只有靠看血的高手们了.
2007-9-10 15:23
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在线等...........顶
2007-9-10 15:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没看明白你要干啥
2007-9-10 15:59
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
想知道这个函数的作用啊.我简单看了下 这个是个系统回调函数
2007-9-10 16:02
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
77D191B2    B8 A5110000     MOV EAX,11A5
77D191B7    BA 0003FE7F     MOV EDX,7FFE0300
77D191BC    FF12            CALL DWORD PTR DS:[EDX]
77D191BE    C2 1000         RETN 10

bp GetMessageW 然后会从这进去后会断在
7C810856   .  33ED          XOR EBP,EBP
7C810858   .  53            PUSH EBX
7C810859   .  50            PUSH EAX
7C81085A   .  6A 00         PUSH 0
7C81085C   .^ E9 73ACFFFF   JMP kernel32.7C80B4D4

这个函数是做什么的哦
2007-9-10 16:05
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
7
包括oep都是从这里开始的吧
2007-9-10 16:07
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
让我挺郁闷的是 这个
77D191B2    B8 A5110000     MOV EAX,11A5
77D191B7    BA 0003FE7F     MOV EDX,7FFE0300
77D191BC    FF12            CALL DWORD PTR DS:[EDX]

索引号居然为11A5.越来越糊涂了.sdt里不可能有那么多函数.我用softice看了 也没有11a5这个索引指向的函数啊
2007-9-10 16:14
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
在CreateRemoteThread里下断点看进去不?
2007-9-10 16:17
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
矣~~ 真的诶~~  果然是那里最后调用到ZwResumeThread 返回到 那去的.然后初始化并执行线程的函数.那 为什么GetMessageW里面的索引
77D191B2    B8 A5110000     MOV EAX,11A5
77D191B7    BA 0003FE7F     MOV EDX,7FFE0300
77D191BC    FF12            CALL DWORD PTR DS:[EDX]

那么大呢? 我dd *KeServiceDescriptorTable+11a5*4 没看到什么函数指针啊.感觉好糊涂
2007-9-10 16:33
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
天呀,救命啊~~~
2007-9-10 16:33
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
新的问题诞生了 用0x11a5去调用KiFastSystemCall 有什么意义? 反正SDT里没有这个函数.11a5根本不存在.最多只是个参数 不能叫函数索引了.具体是干什么的呢
2007-9-10 16:42
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我顶~~~~~~~~~
2007-9-10 16:50
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我顶~~~~~~~~~ 绝对不能沉
2007-9-10 17:15
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
15
11A5,减1000->1A5,是win32k里的,不过我久不看这些了,希望没错
2007-9-10 20:17
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
为什么使用Win32K里面的函数需要增加1000呢
2007-9-11 09:36
0
游客
登录 | 注册 方可回帖
返回
//