Hello guys,
I am trying to reverse the function UseAction which is called when for example a spell is cast. However I am having problems finding out what parameters the function takes... Can someone maybe help me a bit? Here is the assembler of that function (WoW 4.06a):
Code:017338A0 >/. 55 PUSH EBP 017338A1 |. 8BEC MOV EBP,ESP 017338A3 |. 83EC 08 SUB ESP,8 017338A6 |. 57 PUSH EDI 017338A7 |. 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8] 017338AA |. 6A 01 PUSH 1 ; /Arg2 = 00000001 017338AC |. 57 PUSH EDI ; |Arg1 017338AD |. E8 AE28B8FF CALL Wow.012B6160 ; \Wow.012B6160 017338B2 |. 83C4 08 ADD ESP,8 017338B5 |. 85C0 TEST EAX,EAX 017338B7 |. 74 54 JE SHORT Wow.0173390D 017338B9 |. 56 PUSH ESI 017338BA |. 6A 01 PUSH 1 ; /Arg2 = 00000001 017338BC |. 57 PUSH EDI ; |Arg1 017338BD |. E8 AE29B8FF CALL Wow.012B6270 ; \Wow.012B6270 017338C2 |. 83C4 08 ADD ESP,8 017338C5 |. E8 06B30900 CALL Wow.017CEBD0 017338CA |. 8BF0 MOV ESI,EAX 017338CC |. 6A 01 PUSH 1 017338CE |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 017338D1 |. 50 PUSH EAX 017338D2 |. 6A 00 PUSH 0 ; /Arg3 = 00000000 017338D4 |. 6A 02 PUSH 2 ; |Arg2 = 00000002 017338D6 |. 57 PUSH EDI ; |Arg1 017338D7 |. 4E DEC ESI ; | 017338D8 |. E8 432AB8FF CALL Wow.012B6320 ; \Wow.012B6320 017338DD |. 83C4 0C ADD ESP,0C 017338E0 |. 50 PUSH EAX ; |Arg1 017338E1 |. E8 CA5DBAFF CALL Wow.012D96B0 ; \Wow.012D96B0 017338E6 |. 83C4 0C ADD ESP,0C 017338E9 |. 84C0 TEST AL,AL 017338EB |. 74 18 JE SHORT Wow.01733905 017338ED |. 6A 00 PUSH 0 017338EF |. 6A 03 PUSH 3 017338F1 |. 57 PUSH EDI 017338F2 |. E8 292AB8FF CALL Wow.012B6320 017338F7 |. 50 PUSH EAX ; |Arg3 017338F8 |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8] ; | 017338FB |. 51 PUSH ECX ; |Arg2 017338FC |. 56 PUSH ESI ; |Arg1 017338FD |. E8 BEFBFFFF CALL Wow.017334C0 ; \Wow.017334C0 01733902 |. 83C4 18 ADD ESP,18 01733905 |> 5E POP ESI 01733906 |. 33C0 XOR EAX,EAX 01733908 |. 5F POP EDI 01733909 |. 8BE5 MOV ESP,EBP 0173390B |. 5D POP EBP 0173390C |. C3 RETN 0173390D |> 68 E0359A01 PUSH Wow.019A35E0 ; /Arg2 = 019A35E0 ASCII "Usage: UseAction(slot, [, target] [, button])" 01733912 |. 57 PUSH EDI ; |Arg1 01733913 |. E8 D87A0B00 CALL Wow.017EB3F0 ; \Wow.017EB3F0 01733918 |. 83C4 08 ADD ESP,8 0173391B |. 33C0 XOR EAX,EAX 0173391D |. 5F POP EDI 0173391E |. 8BE5 MOV ESP,EBP 01733920 |. 5D POP EBP 01733921 \. C3 RETN
And this is a snippet of the calling function:
EDI contains the address to the function UseAction and calls it like so:Code:012AB025 |. 83C4 0C ADD ESP,0C 012AB028 |> 8B56 18 MOV EDX,DWORD PTR DS:[ESI+18] 012AB02B |. 8B42 04 MOV EAX,DWORD PTR DS:[EDX+4] 012AB02E |. 8B08 MOV ECX,DWORD PTR DS:[EAX] 012AB030 |. 8B79 18 MOV EDI,DWORD PTR DS:[ECX+18] 012AB033 |. 57 PUSH EDI 012AB034 |. E8 47063B00 CALL Wow.0165B680 012AB039 |. 56 PUSH ESI 012AB03A |. FFD7 CALL EDI 012AB03C |. 83C4 08 ADD ESP,8 012AB03F |. 85C0 TEST EAX,EAX 012AB041 |. 7D 0A JGE SHORT Wow.012AB04D 012AB043 |. 5F POP EDI 012AB044 |. 5E POP ESI 012AB045 |. B8 02000000 MOV EAX,2 012AB04A |. 5B POP EBX 012AB04B |. 5D POP EBP 012AB04C |. C3 RETN
012AB03A |. FFD7 CALL EDI
I cant really tell what parameters UseAction takes...





Reply With Quote




