RE: wrapping DX
>004011B8 8B 0D D0 79 41 00 mov ecx,dword ptr [g_pVB (004179d0)]
>004011BE 8B 11 mov edx,dword ptr [ecx]
>004011C0 A1 D0 79 41 00 mov eax,[g_pVB (004179d0)]
>004011C5 50 push eax
>004011C6 FF 52 2C call dword ptr [edx+2Ch]
>
I assume you have checked that comfunc equals peek4u(g_pVB)+#2C (or
something like that).
The last PUSH is interesting. I don't really understand where this parameter
is aimed, but your code (below) doesn't seem to perform the extra push.
Perhaps this param has something to do with Lock() being a virtual
function..? C++ isn't really my strong side so I wouldn't know.
>#60, -- 0: pusha
>#BB,#00,#00,#00,#00, -- 1: mov ebx, paramcount (2)
>#B9,#00,#00,#00,#00, -- 6: mov ecx, params (7)
> -- B: start:
>#8B,#01, -- B: mov eax, [ecx]
>#50, -- D: push eax
>#83,#C1,#04, -- E: add ecx, 4
>#4B, -- 11: dec ebx
>#75,#F7, -- 12: jnz start
>#FF,#15,#00,#00,#00,#00,-- 14: call dword ptr [comfunc] (22)
>#A3,#00,#00,#00,#00,-- 1A: mov [retpointer], eax (27)
>#61, -- 20: popa
>#C3}, -- 21: ret
>
|
Not Categorized, Please Help
|
|