首页
社区
课程
招聘
[讨论]在调试“5.4.2 狙击P.E.B中RtlEnterCriticalSection()的函数指针”中遇到的指针反射问题
2012-8-26 11:32 6071

[讨论]在调试“5.4.2 狙击P.E.B中RtlEnterCriticalSection()的函数指针”中遇到的指针反射问题

2012-8-26 11:32
6071
实验环境:
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

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回