跟踪有东西在调用这个函数在创建线程,而这个函数是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直播授课