Hi, danke für das Tutorial. Ich hab es auch mal versucht und konnte die Chatfunktion finden:
Code:
0041A8A1 57 PUSH EDI ; Adresse zur Nachricht
0041A8A2 56 PUSH ESI ; Größe der Nachricht
0041A8A3 8BCB MOV ECX,EBX ; Klasseninstanz?
0041A8A5 E8 868B0D00 CALL metin2cl.004F3430 ;Funktion
und mir passend dazu mit masm eine dll geschrieben:
Code:
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
msgbox proto :DWORD
.data
basefunc dd 004F3430h ; chatfunktion in metin2
baseptr dd 0061BFC8h ; an dieser adresse gibts die adresse zur instanz der klasse(?)
msgtext db 'squadula',0
.data?
basepointer dd ?
.code
DllMain proc hInstance:DWORD, reason:DWORD, lpReserved:DWORD
.if reason == DLL_PROCESS_ATTACH
invoke msgbox, addr msgtext
.endif
mov eax, 1
ret
DllMain endp
msgbox proc msg:DWORD
mov ecx, baseptr
mov eax, dword ptr ds:[ecx]
mov basepointer, eax
mov ecx, basepointer ; Base
push 0 ; Nachricht
push msg
call basefunc
Ret
msgbox EndP
End DllMain
So weit ich debuggen konnte werden alle Parameter korrekt übergeben, aber sobald ich diese DLL injecte werde ich disconnected :rolleyes: Weißt du eventuell woran das liegen könnte?
mfg
mydoom
________________
EDIT: Ok, sorry fürs pushen ... Ich hab den Fehler gefunden :D Ich muss die Funktion einen Level höher callen:
Code:
004144D5 52 PUSH EDX ; Chattyp
004144D6 50 PUSH EAX ; Nachricht
004144D7 E8 F4620000 CALL metin2cl.0041A7D0 ; <-- Die Funktion :D
Den Code hab ich oben mal angepasst. Vielleicht kann das ja noch jemand gebrauchen :P
mfg mydoom