Function Adress Dumper

10/26/2011 16:56 Cekdar#31
Best best best best, bin direct meinen Multihack schreiben... Danke dirrr!
10/26/2011 17:24 heghessilviu#32
how to use this :D is it good for metin2ro as well?
10/26/2011 17:32 Cekdar#33
welche datei soll man da dumpen, bei metin2 verstehe ich es nicht-.-,,, soll ich jez eine dummped exe suchen, und sie drozdem wieder dumpen... oder einfach die metin2.exe oder den metin2client.bin dumpen? help pls
10/26/2011 17:36 Unpublished#34
metin2client.bin und vorher mit PE Explorer entpacken.
10/26/2011 17:39 Cekdar#35
danke für die schnelle antwort
11/05/2011 16:14 vwap#36
Wenn ich im Log jetzt z.B. diese Adresse habe, wie bekomme ich dann die Argumente davon?
GetPlayTime 00451000

In Olly sieht der asm code bei der addy so aus:
Code:
CPU Disasm
Address   Hex dump          Command                                                Comments
00451000  /.  8B0D 7C828100 MOV ECX,DWORD PTR DS:[81827C]
00451006  |.  E8 F586FFFF   CALL 00449700
0045100B  |.  894424 08     MOV DWORD PTR SS:[ARG.2],EAX
0045100F  |.  C74424 04 700 MOV DWORD PTR SS:[ARG.1],00760C70
00451017  \.- FF25 30F87500 JMP DWORD PTR DS:[<&python22.Py_BuildValue>]
11/05/2011 19:48 Mi4uric3#37
Quote:
Originally Posted by Headpuster View Post
Code:
[COLOR="Blue"]MOV[/COLOR] ECX,[0081827C]
[COLOR="Blue"]CALL[/COLOR] 00449700
Benötigt wie man sieht keine Argumente, da kein "Push [irgendwas]" vorkommt
11/05/2011 19:56 SandMann016#38
Quote:
Originally Posted by Headpuster View Post
Wenn ich im Log jetzt z.B. diese Adresse habe, wie bekomme ich dann die Argumente davon?
GetPlayTime 00451000

In Olly sieht der asm code bei der addy so aus:
Code:
CPU Disasm
Address   Hex dump          Command                                                Comments
00451000  /.  8B0D 7C828100 MOV ECX,DWORD PTR DS:[81827C]
00451006  |.  E8 F586FFFF   CALL 00449700
0045100B  |.  894424 08     MOV DWORD PTR SS:[ARG.2],EAX
0045100F  |.  C74424 04 700 MOV DWORD PTR SS:[ARG.1],00760C70
00451017  \.- FF25 30F87500 JMP DWORD PTR DS:[<&python22.Py_BuildValue>]
Ich gehe jetzt mal davon aus das das result hier ist:0045100B oder so is
//GetPlayTimeInSeconds----------------------------------------
int GetPlayTimerInSeconds()
{
DWORD GetPlayTimeInput = *(DWORD*)(0x81827C), GetPlayTimeCall = 0x449700;
int result;
__asm
{
MOV ECX,GetPlayTimeInput
CALL GetPlayTimeCall
MOV result,eax
}
return result;
}

so oder soähnlich sollte es aussehen o.O
11/06/2011 02:52 .ErpeL#39
__asm
{
MOV ECX,GetPlayTimeInput
CALL GetPlayTimeCall
MOV result, EAX
}

Version 1.2

So jetzt sollte es mit dem Korea Metin gehn. Das Problem ist nur das sich die ImageBase nach jedem Neustart ändert, man müsste also jedes Offset wie folgt umrechen:

In der Liste Steht z.B.:
GetMainActorVID 00413AF0

und die Aktuelle ImageBase ist 012B0000, dann müsste man 012B0000 + (00413AF0 - 00400000) rechnen. Also ImageBase + (AdresseInDerListe - 00400000). Dann sucht man nach 13E4AF0 anstelle von 00413AF0.

Ich werde das Teil deshalb später als DLL umprogrammieren damit man es in den laufenen Prozess injizieren kann und immer die Aktuellen Adressen hat ohne Rechnen zu müssen.