|
You last visited: Today at 00:34
Advertisement
Problem bei Funktionspointer
Discussion on Problem bei Funktionspointer within the General Coding forum part of the Coders Den category.
08/10/2011, 12:00
|
#1
|
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 4
|
Problem bei Funktionspointer
Hallo e*pvp,
Gelöst (Post 11):
Quote:
Originally Posted by First Chaos
Habe ja oben schon erwähnt, dass ich jetzt statt Dev-C++ Microsoft Visual c++ 2008 Express Edition nutze.
ich habe folgenden Code:
PHP Code:
#include <windows.h>
extern "C" __declspec (dllexport) int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved);
extern "C" __declspec (dllexport) DWORD WINAPI InjNachricht();
int gotomap()
{
typedef int (__cdecl* LPFNDLLFUNC1)(int,int,int);
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 gozone; // Function pointer
hDLL = GetModuleHandle("Engine.dll");
if (hDLL == NULL)
{
return 0;
}
else
{
gozone = (LPFNDLLFUNC1)GetProcAddress(hDLL,"?GoZone@CNetworkLibrary@@QAEXHHH@Z");
if (!gozone)
{
return 0;
}
else
{
gozone(12,0,139);
return 1;
}
}
}
DWORD WINAPI InjNachricht () {
MessageBox(0,"Injection erfolgreich","Meldung",0);
gotomap ();
return 1;
}
int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved)
{
if(reason==DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE) InjNachricht, 0, 0, 0);
return 1;
}
}
Wenn ich den in Dev-C++ kompiliere und ausführe funktioniert alles einwandfrei
in microsoft c++ allerdings stürzt das Programm ab.
Woran kann das liegen ?
Ist ja der selbe Code.
First Chaos
|
Dieses Problem ist gelöst:
ich möchte die Memory eines Spiels per Dll auslesen.
Dies geschieht mit folgendem C++ Code:
PHP Code:
unsigned int address=0xAddresse; //meine Addresse
float var;
var=*(float*)address; //Wert per Pointer lesen
funktioniert auch
wenn jetzt aber bei Wert in Cheat Engine nur ?? anzeigt,
bekoomme ich, wenn ich den Wert lesen will,vom Spiel einen Error.
Diesen Error kann man zwar beim 1ten mal ignorieren,
aber der Hack funktioniert danach nicht mehr.
Wie kann ich den Error verhindern?
Schonmal danke.
mfg First Chaos
|
|
|
08/10/2011, 19:42
|
#2
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Was bedeutet wohl ?? ?
Dass die Adresse ungültig ist, also greifst du auf ungültigen Speicher zu. Natürlich crasht da das Spiel, was erwartest du?
|
|
|
08/10/2011, 20:32
|
#3
|
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 4
|
ja schon, aber wie kann ich das verhindern ?
kann ich im vorraus erkennen, dass diese Addressen ungültig sind?
|
|
|
08/10/2011, 22:31
|
#4
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
__try
{
read;
}
__except(1)
{
do something
}
ich gebe mir mühe bei idiesme post!
|
|
|
08/11/2011, 10:53
|
#5
|
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
|
Quote:
Originally Posted by MrSm!th
Was bedeutet wohl ?? ?
Dass die Adresse ungültig ist, also greifst du auf ungültigen Speicher zu. Natürlich crasht da das Spiel, was erwartest du?
|
Mensch bist du unfreundlich
...
|
|
|
08/11/2011, 17:55
|
#6
|
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
|
Wahrscheinlich ist es eine dynamische Adresse die sich bei Neustart des Spieles ändert. in dem fall musst du den Pointer zu der Adresse finden und in deiner Dll benutzen.
|
|
|
08/11/2011, 20:14
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by SmackJew
Mensch bist du unfreundlich
...

|
r u kiddin me? ;O
@TE:
Entweder buffys Methode oder schau dir mal IsBadWritePtr/IsBadReadPtr an.
|
|
|
08/11/2011, 20:26
|
#8
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Quote:
Originally Posted by MrSm!th
oder schau dir mal IsBadWritePtr/IsBadReadPtr an.
|
Hmm. Das kannte ich nicht, aber ist es sinnvoll diese Funktion zu nutzen?
Quote:
|
Originally Posted by MSDN
Important This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use. For more information, see Remarks on this page.
|
|
|
|
08/11/2011, 20:34
|
#9
|
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 4
|
hi,
dank buffy's lösung hats nach einigem Probieren jetzt super geklappt.
P.S. habe vor kurzem von dev c++ auf microsoft vs c++ umgestellt.
wo kann ich Libraries zum Linker hinzufügen?
First Chaos
|
|
|
08/11/2011, 23:32
|
#10
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Ja, für solche Zwecke ist es vollkommen ausreichend, notfalls kann man auch beides nutzen.
|
|
|
08/17/2011, 10:52
|
#11
|
elite*gold: 0
Join Date: Jun 2011
Posts: 30
Received Thanks: 4
|
Problem bei Funktionspointer
Habe ja oben schon erwähnt, dass ich jetzt statt Dev-C++ Microsoft Visual c++ 2008 Express Edition nutze.
ich habe folgenden Code:
PHP Code:
#include <windows.h>
extern "C" __declspec (dllexport) int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved);
extern "C" __declspec (dllexport) DWORD WINAPI InjNachricht();
int gotomap()
{
typedef int (__cdecl* LPFNDLLFUNC1)(int,int,int);
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 gozone; // Function pointer
hDLL = GetModuleHandle("Engine.dll");
if (hDLL == NULL)
{
return 0;
}
else
{
gozone = (LPFNDLLFUNC1)GetProcAddress(hDLL,"?GoZone@CNetworkLibrary@@QAEXHHH@Z");
if (!gozone)
{
return 0;
}
else
{
gozone(12,0,139);
return 1;
}
}
}
DWORD WINAPI InjNachricht () {
MessageBox(0,"Injection erfolgreich","Meldung",0);
gotomap ();
return 1;
}
int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved)
{
if(reason==DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE) InjNachricht, 0, 0, 0);
return 1;
}
}
Wenn ich den in Dev-C++ kompiliere und ausführe funktioniert alles einwandfrei
in microsoft c++ allerdings stürzt das Programm ab.
Woran kann das liegen ?
Ist ja der selbe Code.
Edit: Nach einigem Lesen (Google,Wikipedia) hab ichs gelöst.
hab einfach stdcall statt cdecl benutzt
First Chaos
|
|
|
Similar Threads
|
[Problem]Habe ein Problem und zwar spinnt mein VPC etwas(ohne Grund)?!
07/28/2011 - Metin2 Private Server - 10 Replies
Also wie schon gesagt meins Server spinnt wodurch kiks usw. kommen :(
ich lade euch die Screens in den Anhang, mit der Hoffnung, dass ihr mir helfen könnt :) wäre echt sehr nice :)
|
Type convertierung / Funktionspointer to DWORD (Functionsaddr)
06/28/2011 - General Coding - 3 Replies
Hey liebe Coder,
Ich habe ein kleines Umsetzungsproblem in einem meiner Programme.
Ich versuche die Addr einer Funktion in DWORD zu speichern.
class Beispiel
{
public:
void Funktion();
|
Funktionspointer help
07/17/2008 - General Coding - 7 Replies
Hallo,
habe ein Problem. Nehmen wir an diese Adresse ist ein Funktionspointer (00A12345) in einem fremden Prozess. Nun möchte ich diese Funktion aufrufen. Dazu habe ich folgendes versucht... Ich habe eine dll erstellt, die diese Funktion aufrufen soll.
Die struct stimmt!
DELPHI 6
library MoveFunction;
uses
Windows,
|
All times are GMT +1. The time now is 00:34.
|
|