在跟踪一软件时,如果不进入JMP.&kernel32.DeviceIoControl,就出错,进去后遇到SYSENTER,就退出来了,不知道如何解决?代码如下:
005EDBEF |. 6A 00 PUSH 0 ; /pOverlapped = NULL
005EDBF1 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] ; |
005EDBF4 |. 52 PUSH EDX ; |pBytesReturned
005EDBF5 |. 6A 0C PUSH 0C ; |OutBufferSize = C (12.)
005EDBF7 |. 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18] ; |
005EDBFA |. 51 PUSH ECX ; |OutBuffer
005EDBFB |. 6A 0C PUSH 0C ; |InBufferSize = C (12.)
005EDBFD |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] ; |
005EDC00 |. 50 PUSH EAX ; |InBuffer
005EDC01 |. 68 1C002200 PUSH 22001C ; |IoControlCode = 22001C
005EDC06 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hDevice
005EDC09 |. E8 429CE1FF CALL <JMP.&kernel32.DeviceIoControl> ; \DeviceIoControl跟进去代码如:7C801625
005EDC0E |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX ; eax值为0时就错,eax值为1就对。
005EDC11 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
005EDC14 |. 85D2 TEST EDX,EDX
7C801625 > 6A 14 PUSH 14
7C801627 68 C80C817C PUSH kernel32.7C810CC8
7C80162C E8 9A0E0000 CALL kernel32.7C8024CB
7C801631 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
7C801634 8BC1 MOV EAX,ECX
7C801636 25 0000FFFF AND EAX,FFFF0000
7C80163B 3D 00000900 CMP EAX,90000
7C801640 0F95C0 SETNE AL
7C801643 8B75 24 MOV ESI,DWORD PTR SS:[EBP+24]
7C801646 33DB XOR EBX,EBX
7C801648 FF75 1C PUSH DWORD PTR SS:[EBP+1C]
7C80164B FF75 18 PUSH DWORD PTR SS:[EBP+18]
7C80164E FF75 14 PUSH DWORD PTR SS:[EBP+14]
7C801651 FF75 10 PUSH DWORD PTR SS:[EBP+10]
7C801654 51 PUSH ECX
7C801655 3BF3 CMP ESI,EBX
7C801657 75 3E JNZ SHORT kernel32.7C801697
7C801659 3AC3 CMP AL,BL
7C80165B 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
7C80165E 50 PUSH EAX
7C80165F 53 PUSH EBX
7C801660 53 PUSH EBX
7C801661 53 PUSH EBX
7C801662 FF75 08 PUSH DWORD PTR SS:[EBP+8]
7C801665 0F84 D8000000 JE kernel32.7C801743
7C80166B FF15 3810807C CALL DWORD PTR DS:[<&ntdll.NtDeviceIoCon>; ntdll.ZwDeviceIoControlFile
7C801671 3D 03010000 CMP EAX,103
7C801676 0F84 B0000000 JE kernel32.7C80172C
7C80167C 3BC3 CMP EAX,EBX
7C80167E 0F8C CA000000 JL kernel32.7C80174E
7C801684 8B45 20 MOV EAX,DWORD PTR SS:[EBP+20]
7C801687 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
7C80168A 8908 MOV DWORD PTR DS:[EAX],ECX
7C80168C 33C0 XOR EAX,EAX
7C80168E 40 INC EAX
7C80168F E8 770E0000 CALL kernel32.7C80250B 跟进去代码如下:
7C801694 C2 2000 RETN 20
7C92EB8B > 8BD4 MOV EDX,ESP
7C92EB8D 0F34 SYSENTER
7C92EB8F 90 NOP
7C92EB90 90 NOP
7C92EB91 90 NOP
7C92EB92 90 NOP
7C92EB93 90 NOP
7C92EB94 > C3 RETN
请高手指导,谢谢。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课