![]() |
#2
东海一鱼2010-09-18 13:12
|

00432491 |> /FF37 /push dword ptr [edi] ; /MutexName
00432493 |. |6A 00 |push 0 ; |InitialOwner = FALSE
00432495 |. |6A 00 |push 0 ; |pSecurity = NULL
00432497 |. |FF15 4C514D00 |call dword ptr [<&KERNEL32.CreateMut>; \CreateMutexW
0043249D |. |85C0 |test eax, eax
0043249F |. |8906 |mov dword ptr [esi], eax
004324A1 |. |74 14 |je short 004324B7
004324A3 |. |FF15 48514D00 |call dword ptr [<&KERNEL32.GetLastEr>; [GetLastError
004324A9 |. |3D B7000000 |cmp eax, 0B7
004324AE |. |75 20 |jnz short 004324D0
004324B0 |. |8BCE |mov ecx, esi
004324B2 |. |E8 A4010500 |call 0048265B
004324B7 |> |83C7 04 |add edi, 4
004324BA |. |3BFB |cmp edi, ebx
004324BC ^\7C D3 jl short 00432491 ; if edi<ebx then goto 432491
00432493 |. |6A 00 |push 0 ; |InitialOwner = FALSE
00432495 |. |6A 00 |push 0 ; |pSecurity = NULL
00432497 |. |FF15 4C514D00 |call dword ptr [<&KERNEL32.CreateMut>; \CreateMutexW
0043249D |. |85C0 |test eax, eax
0043249F |. |8906 |mov dword ptr [esi], eax
004324A1 |. |74 14 |je short 004324B7
004324A3 |. |FF15 48514D00 |call dword ptr [<&KERNEL32.GetLastEr>; [GetLastError
004324A9 |. |3D B7000000 |cmp eax, 0B7
004324AE |. |75 20 |jnz short 004324D0
004324B0 |. |8BCE |mov ecx, esi
004324B2 |. |E8 A4010500 |call 0048265B
004324B7 |> |83C7 04 |add edi, 4
004324BA |. |3BFB |cmp edi, ebx
004324BC ^\7C D3 jl short 00432491 ; if edi<ebx then goto 432491
下面是高级语言伪代码。请前辈们看看小生转换得有错不?谢谢!

Label00432491:
eax=CreateMutexW(0,0,dword ptr[edi])
dword ptr[esi]=eax
if(eax and eax) then
edi=edi+4
if edi<ebx then goto Label00432491
else
eax=GetLastError
if eax<>0 then
goto other
else
exc=esi
call 0048265b
edi=edi+4
if edi<ebx then goto Label00432491
end
end
eax=CreateMutexW(0,0,dword ptr[edi])
dword ptr[esi]=eax
if(eax and eax) then
edi=edi+4
if edi<ebx then goto Label00432491
else
eax=GetLastError
if eax<>0 then
goto other
else
exc=esi
call 0048265b
edi=edi+4
if edi<ebx then goto Label00432491
end
end
[ 本帖最后由 ioriliao 于 2010-9-18 11:45 编辑 ]