RE: wrapping DX
- Posted by stabmaster_ at HOTMAIL.COM May 30, 2001
- 436 views
>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 >