You last visited: Today at 18:56
Advertisement
Metin2 GetCharMoney
Discussion on Metin2 GetCharMoney within the C/C++ forum part of the Coders Den category.
01/17/2014, 00:43
#1
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Metin2 GetCharMoney
Hey Leute,
Ich wollte mir mal die char money zurück geben lassen.
Hier mal der asm code:
Code:
MOV ECX,DWORD PTR DS:[0x0FE54EC]
MOV EAX,DWORD PTR DS:[ECX+4]
mov edx,DWORD PTR DS:[eax+10]
add ecx,04
push 0B
call edx
mov Money, edx
Könntet ihr mir helfen, wenn ja währe ich dankbar.
Mfg
01/17/2014, 18:22
#2
elite*gold: 241
Join Date: Jan 2011
Posts: 4,756
Received Thanks: 665
Sorry, aber worum geht es bei dem Code?
01/18/2014, 01:13
#3
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Ich kann c++^^
Ich will mir über den asm code mein yang zurückgeben lassen, mit dem charname hab ich es hinbekommen:
charname:
Aber mit dem yang nicht:
Code:
#include <Windows.h>
char* money;
char* Functionen::GetCharMoney()
{
__asm
{
MOV ECX,DWORD PTR DS:[0x0FE54EC]
MOV EAX,DWORD PTR DS:[ECX+4]
ADD ECX,4
PUSH 0xB
CALL DWORD PTR DS:[EAX+0x10]
MOV DWORD PTR SS:[ESP+0x8],EAX
JMP DWORD PTR DS:[0x0E2A7EC]
MOV Money,EAX
}
return Money;
}
void Functionen::SendChatPacket(char* Nachricht,int ChatType)
{
__asm
{
MOV ECX, SendChatPacketPointer
PUSH ChatType
PUSH Nachricht
CALL SendChatPacketCall
}
}
BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
SendChatPacket(GetCharMoney() ,0);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
01/18/2014, 09:50
#4
elite*gold: 150
Join Date: Jan 2014
Posts: 11,338
Received Thanks: 3,780
Ich denke du sollst deine Frage in die C/C++ Sektion posten.
01/18/2014, 20:23
#5
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
Ist ja auch kein Wunder.
Code:
MOV ECX,DWORD PTR DS:[0x0FE54EC]
MOV EAX,DWORD PTR DS:[ECX+4]
ADD ECX,4
PUSH 0xB
CALL DWORD PTR DS:[EAX+0x10]
MOV DWORD PTR SS:[ESP+0x8],EAX
JMP DWORD PTR DS:[0x0E2A7EC] //*!!*
MOV Money,EAX
Du springst zu einer Adresse also wird das
nicht erreicht.
Code:
mov ecx, dword ptr ds:[0x0FE65EC]
mov eax, dword ptr ds:[ecx+0x4]
add ecx, 0x4
push 0xB
call dword ptr ds:[eax+0x10] //Hier wird ja anscheinend das Geld ausgelesen
mov dword ptr ss:[esp+0x8], eax //Und hier in ESP+0x8 gespeichert was du aber eig. nicht brauchst.
mov Money, eax
neuer Code:
Code:
pushad
mov ecx, dword ptr ds:[0x0FE65EC]
mov eax, dword ptr ds:[ecx+0x4]
add ecx, 0x4
push 0xB
call dword ptr ds:[eax+0x10]
mov Money, eax
popad
Ich glaube aber mal das die Funktion keinen String wieder gibt oder? ( würde mal auf DWORD tippen )
Falls nicht musst du halt Money noch zu einem String machen aber das geht ja einfach mit sprintf oder so.
01/18/2014, 21:20
#6
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Was macht pushad&popad
Der Neue Code geht auch nicht
01/18/2014, 22:48
#7
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
pushad - Pusht alles Register auf den Stack.
popad - Holt alle Register aus dem Stack zurück.
hast du schon einmal versucht einen Debugger zu verwenden?
Bzw. was passiert überhaupt?
Code:
char* Functionen::GetCharMoney()
{
DWORD dwMoney = 0;
char* szMoney = new char[MAX_PATH];
_asm
{
pushad
mov ecx, dword ptr ds:[0x0FE65EC]
mov eax, dword ptr ds:[ecx+0x4]
add ecx, 0x4
push 0xB
call dword ptr ds:[eax+0x10]
mov dwMoney, eax
popad
}
sprintf(szMoney, "%d", dwMoney); //Unschön aber geht
return szMoney
}
01/18/2014, 23:10
#8
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Also wenn ich mit CE Injecte dann steht: Failed to Inject
01/18/2014, 23:12
#9
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
Das hat nichts mit dem Code zutun sondern damit das du keine Rechte hast die Dll zu injecten o.ä .
01/18/2014, 23:51
#10
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Nein wenn ich die function nicht aufrufe und nur so mache: m2.SendChackPacket("Hallo",0)
dann gehts, und das geht net:
Code:
char* Functionen::GetCharMoney()
{
DWORD dwMoney = 0;
char* szMoney = new char[MAX_PATH];
_asm
{
pushad
mov ecx, dword ptr ds:[0x0FE65EC]
mov eax, dword ptr ds:[ecx+0x4]
add ecx, 0x4
push 0xB
call dword ptr ds:[eax+0x10]
mov dwMoney, eax
popad
}
sprintf(szMoney, "%d", dwMoney); //Unschön aber geht
return szMoney
}
01/19/2014, 11:59
#11
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
wie sieht denn die Funktion von dem Namen aus?
wie gesagt guck mit einem Debugger was da nicht funktioniert und behebe es dann.
01/19/2014, 15:50
#12
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Das mit debugger hab ich schon versucht hier mal der asm code von dem namen:
MOV ECX,DWORD PTR DS:[0x0FE54EC]
MOV EAX,DWORD PTR DS:[ECX+4]
ADD ECX,4
CALL DWORD PTR DS:[EAX+0x14]
MOV CharName,EAX
01/19/2014, 18:24
#13
elite*gold: 1
Join Date: Apr 2010
Posts: 13,772
Received Thanks: 15,036
Quote:
Originally Posted by
~Caturix~
Nein wenn ich die function nicht aufrufe und nur so mache: m2.SendChackPacket("Hallo",0)
Was passiert denn wenn du das so aufrufst?
Code:
m2.SendChatPacket(Functionen::GetCharMoney(), 0);)
01/19/2014, 19:07
#14
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Hier mal die Main.cpp,Functionen.h,Functionen.cpp
Attached Files
Projects.rar
(1.1 KB, 26 views)
01/26/2014, 20:28
#15
elite*gold: 0
Join Date: Dec 2013
Posts: 61
Received Thanks: 4
Kann wer helfen?
All times are GMT +1. The time now is 18:57 .