[#1][TuT][MapleStory] How to make a Trainer

03/19/2016 19:02 Coffee Time#1
Hallo allerseits. Hier werde ich euch zeigen, die Grundlagen, wie du deinen eigenen Trainer (mit Hacks) für Maplestory schreibst.

Requirements: Visual Studio/C++ 2008+

Step 1: Set up
Öffne dein Visual Studio, geh zu Datei -> Neu -> Win32-> Win32-Projekt
Benenne das Projekt, so wie du es möchtest.

[Only registered and activated users can see links. Click Here To Register...]

Im Popup-Fenster geht ihr wie folgt vor:
Klicken Sie im ersten Fenster
Anwendungstyp (DLL)
Zusätzliche Optionen (leeres Projekt)
Du kannst dann auf "Fertig" klicken.

[Only registered and activated users can see links. Click Here To Register...]


Step 2: File Creation
Nun müssen wir unsere erste CPP-Datei erstellen. Dies wird unsere Datei sein, wenn wir die DLL in das Spiel injecten.

Rechtsklick auf Ressourcendateien und wähle
Hinzufügen -> Neues Element-> C++ Datei (.cpp).
Nenne es für dieses Tutorial MainDLL.

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Nun benötigen wir eine Form.

Rechtsklick auf Headerdateien. Hinzufügen -> Neues Element -> UI -> Windows Form.
Ich nenne es in diesen Fall einfach Form1 für dieses Tutorial. Klicken Sie auf OK

Dann wird das kommen:
[Only registered and activated users can see links. Click Here To Register...]
Drücke auf "JA"

Dort müssten nun 2 neue Dateien sein. Form1.h und Form1.cpp.
Verschiebe Form1.cpp zu "Ressourcendateien". Sieht einfach schöner aus.
Das müsste dann so aussehen:

[Only registered and activated users can see links. Click Here To Register...]

Fertig! Nun sind wir mit Step 2 auch durch. Gar nicht so schwer oder? :)


Step 3: Coding
Wir arbeiten uns von der Spitze der Lösung nur aus Gründen der Einfachheit. Du kannst diese in beliebiger Reihenfolge tun
oder sogar den Code ändern, um dein Trainer anzupassen.

Form1.h
Rechtsklick auf "Form1.h" -> "Code anzeigen".

Du fügst in der ersten Zeile, wirklich ganz oben, ein:
Code:
#include <windows.h>
[Only registered and activated users can see links. Click Here To Register...]

Was #include tut, ist es die benötigten Dateien/Funktionen beinhaltet die Programmarbeit zu machen. gibt es 2 verschiedene enthält.
1. ist
#include <file.h> dieses enthält Dateien, die auf Ihrem System gefunden werden. für das Projekt extern
2. ist
#include "file.h" diese Dateien enthält, die innerhalb des Projekts zu finden sind
Sie können, indem Sie die Dateien Funktionen und Programme Eigenschaften teilen, wenn diese Funktionen zu finden sind.


Nun auch wieder schnell raus aus Form1.h

Form1.cpp
Klicke doppelt auf Form1.cpp um es zu öffnen.
Dort ist nur eine Zeile beschrieben. Ein Include. Dort drunter schreibst du hin:
Code:
using namespace PROJEKTNAME;
Dort drunter (unter dem namespace) erstellen wir die Main.
Code:
void Main(void)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Application::Run(gcnew Form1); //ändere Form1 auf den Namen deiner Form
    Application::Exit();
}
Das müsste dann so aussehen:
[Only registered and activated users can see links. Click Here To Register...]

Das wars auch schon!
Nun schnell zur MainDLL.cpp

MainDLL.cpp
Doppelklick auf MainDLL.cpp

Füge dort ein:
Code:
#include <windows.h>
extern void Main(void);
::BOOL WINAPI DllWork(__in::HMODULE hModule)
{
	Main();
	return true;
}

::BOOL WINAPI DllMain(__in::HMODULE hModule, __in::DWORD dwReason, __in __reserved::LPVOID lpvReserved)
{
	::HANDLE hThread = NULL;

	if (dwReason == DLL_PROCESS_ATTACH)
	{
		if ((hThread = ::CreateThread(NULL, 0, (::LPTHREAD_START_ROUTINE)&DllWork, (::HMODULE)hModule, 0, NULL)) == NULL)
		{
			return FALSE;
		}
		if (::CloseHandle(hThread) == FALSE)
		{
			//do nothing
		}
	}
	return TRUE;
}
Das müsste dann so aussehen:
[Only registered and activated users can see links. Click Here To Register...]

Nun um die ganzen Fehler zu beheben.. Die dort angezeigt werden, ändere dein Projekt von Debug zu Release.

[Only registered and activated users can see links. Click Here To Register...]

Nun noch abspeichern und Builden und dann ist dein Trainer fertig! Herzlichen Glückwunsch!
========== Erstellen: 1 erfolgreich, 0 fehlerhaft, 0 aktuell, 0 übersprungen ==========


Wenn du nun deine DLL injectest, müsste deine Form kommen.


Weitere Tutorials folgen! (Werden hier auch verlinkt!)
Bitte Danke geben und Feedback hinterlassen. Bei Fragen einfach in den Kommentaren stellen.
03/19/2016 21:51 algernong#2
Quote:
Was #include tut, ist es die benötigten Dateien/Funktionen beinhaltet die Programmarbeit zu machen. gibt es 2 verschiedene enthält.
1. ist
#include <file.h> dieses enthält Dateien, die auf Ihrem System gefunden werden. für das Projekt extern
2. ist
#include "file.h" diese Dateien enthält, die innerhalb des Projekts zu finden sind
Sie können, indem Sie die Dateien Funktionen und Programme Eigenschaften teilen, wenn diese Funktionen zu finden sind.
Danke, jetzt verstehe ich das endlich.
03/19/2016 22:33 Coffee Time#3
Quote:
Originally Posted by algernong View Post
Danke, jetzt verstehe ich das endlich.
Haha, was ein Deutsch.
Werde ich bearbeiten. Danke.
03/21/2016 21:56 Cøre#4
Ich würde von CLI abraten!
03/22/2016 11:30 Coffee Time#5
Quote:
Originally Posted by Cøre View Post
Ich würde von CLI abraten!
Hä? Warum nicht?
03/22/2016 12:07 +Yazzn#6
CLI wurde von Hitler erfunden.
03/22/2016 13:37 YatoDev#7
c++ cli sollte dazu verwendet werden um zb wrapper für native apis zu schreiben und nicht um damit ganze projekte zu verwirklichen. Man sollte sich da schon entscheiden für c++ oder .Net.

c++ cli für einen game hack zu verwenden ist auch nicht wirklich optimal.
in den prozess wird die .net laufzeitumgebung geladen.
03/22/2016 14:00 Coffee Time#8
Hmm okay. Danke!
Werde ich mir merken :)