-
-
[讨论]在调试“5.4.2 狙击P.E.B中RtlEnterCriticalSection()的函数指针”中遇到的指针反射问题
-
发表于: 2012-8-26 11:32 6190
-
实验环境:
Windows 2000 SP2 虚拟机
其余编译器、编译选项、build版本与书中要求的一致
调试过程
按照书中的步骤,通过查看堆栈的数据变化,看到double-shooting,即将0x7ffdf020处的RtlEnterCriticalSection()的函数指针变成了shellcode 地址(0x520688)。同时发生指针发射,在0x52068c处写入0x7ffdf020,导致脚本在返回shellcode中运行脚本时,OD报“Don’t Know how to bypass command at address 52068d.try to change Eip or pass exception to program”(见下图,在52068d那行,OD给出的注释是LOCK prefix is not allowed ),使用shift+F9忽略该条指令,还是无法蹦出failwest 对话框。在书中说,针对指针发射现象,大多数情况下都会当做无关痛痒的指令执行过去,可看来我这次调试属于“少数情况”下了,不知道大家有没有遇到过,请指教!
Windows 2000 SP2 虚拟机
其余编译器、编译选项、build版本与书中要求的一致
调试过程
按照书中的步骤,通过查看堆栈的数据变化,看到double-shooting,即将0x7ffdf020处的RtlEnterCriticalSection()的函数指针变成了shellcode 地址(0x520688)。同时发生指针发射,在0x52068c处写入0x7ffdf020,导致脚本在返回shellcode中运行脚本时,OD报“Don’t Know how to bypass command at address 52068d.try to change Eip or pass exception to program”(见下图,在52068d那行,OD给出的注释是LOCK prefix is not allowed ),使用shift+F9忽略该条指令,还是无法蹦出failwest 对话框。在书中说,针对指针发射现象,大多数情况下都会当做无关痛痒的指令执行过去,可看来我这次调试属于“少数情况”下了,不知道大家有没有遇到过,请指教!
00520688 78 01 JS SHORT 0052068B 0052068A 52 PUSH EDX 0052068B 0020 ADD BYTE PTR DS:[EAX],AH 0052068D F0:FD LOCK STD ; LOCK prefix is not allowed 0052068F ^7F 90 JG SHORT 00520621 00520691 90 NOP ; 520688 00520692 90 NOP 00520693 90 NOP 00520694 B8 20F0FD7F MOV EAX,7FFDF020 00520699 BB D621F877 MOV EBX,ntdll.RtlEnterCriticalSection 0052069E 8918 MOV DWORD PTR DS:[EAX],EBX 005206A0 FC CLD 005206A1 68 6A0A381E PUSH 1E380A6A 005206A6 68 6389D14F PUSH 4FD18963 005206AB 68 3274910C PUSH 0C917432 005206B0 8BF4 MOV ESI,ESP 005206B2 8D7E F4 LEA EDI,DWORD PTR DS:[ESI-C] 005206B5 33DB XOR EBX,EBX 005206B7 B7 04 MOV BH,4 005206B9 2BE3 SUB ESP,EBX 005206BB 66:BB 3332 MOV BX,3233 005206BF 53 PUSH EBX 005206C0 68 75736572 PUSH 72657375 005206C5 54 PUSH ESP 005206C6 33D2 XOR EDX,EDX 005206C8 64:8B5A 30 MOV EBX,DWORD PTR FS:[EDX+30] 005206CC 8B4B 0C MOV ECX,DWORD PTR DS:[EBX+C] 005206CF 8B49 1C MOV ECX,DWORD PTR DS:[ECX+1C] 005206D2 8B09 MOV ECX,DWORD PTR DS:[ECX] 005206D4 8B69 08 MOV EBP,DWORD PTR DS:[ECX+8] 005206D7 AD LODS DWORD PTR DS:[ESI] 005206D8 3D 6A0A381E CMP EAX,1E380A6A 005206DD 75 05 JNZ SHORT 005206E4 005206DF 95 XCHG EAX,EBP 005206E0 FF57 F8 CALL DWORD PTR DS:[EDI-8] 005206E3 95 XCHG EAX,EBP 005206E4 60 PUSHAD 005206E5 8B45 3C MOV EAX,DWORD PTR SS:[EBP+3C] 005206E8 8B4C05 78 MOV ECX,DWORD PTR SS:[EBP+EAX+78] 005206EC 03CD ADD ECX,EBP 005206EE 8B59 20 MOV EBX,DWORD PTR DS:[ECX+20] 005206F1 03DD ADD EBX,EBP 005206F3 33FF XOR EDI,EDI 005206F5 47 INC EDI 005206F6 8B34BB MOV ESI,DWORD PTR DS:[EBX+EDI*4] 005206F9 03F5 ADD ESI,EBP 005206FB 99 CDQ 005206FC 0FBE06 MOVSX EAX,BYTE PTR DS:[ESI] 005206FF 3AC4 CMP AL,AH 00520701 74 08 JE SHORT 0052070B 00520703 C1CA 07 ROR EDX,7 00520706 03D0 ADD EDX,EAX
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: