C++ Pointer mit Offsets?

05/09/2013 04:40 EasyFarm#1
Hi.

Ich habe einen Pointer gefunden mit 5 Offsets.
Hier mal ein Bild:
[Only registered and activated users can see links. Click Here To Register...]

Mit Autoit habe ich es nicht geschafft, da die Value sich nie geändert hat.
Jetzt will ich es per DLL machen.

So sieht meine DLL bis jetzt aus:

Quote:
#include <windows.h>


void testTH()
{
MessageBoxA(NULL, "Meine Messagebox", "Titel", MB_OK);
}

BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)testTH, 0, 0, 0);

}

return TRUE;
}
Kann nicht viel ausser eine Messagebox.
Wie füge ich nun diesen Pointer mit 2 Bytes ein, um ihn zu verändern?

In Cheat Engine steht in der Textbox beim Pointer das:
"metin2client.bin"+002C9844

Hoffe jemand kann helfen..

Danke sehr und mfg.
Easy :)
05/09/2013 06:28 bloodx#2
der Thread sollte schonmal so aussehen

unsigned long __stdcall Thread( void* )

mit void erstellet man keine Thread's.
05/09/2013 13:08 EasyFarm#3
Habs jetzt mal in visual basic probiert den auszulesen, aber es kommt immer 0 raus!

Ich schätze ich addiere die Offsets falsch oder?

Code:

Quote:
Dim SpeedAdresse As String = "&H2C9844"
Dim SpeedOffset1 As String = "&H430"
Dim SpeedOffset2 As String = "&H2f4"
Dim SpeedOffset3 As String = "&H2f4"
Dim SpeedOffset4 As String = "&H0"
Dim SpeedOffset5 As String = "&H19e"
Dim SpeedPointerWert As Long
Private Sub TimerActualize_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerReadAll.Tick
Dim prozess1 As System.Diagnostics.Process
Dim pList() As Process
pList = System.Diagnostics.Process.GetProcesses
For Each proc As System.Diagnostics.Process In pList
If proc.ProcessName = "Solitaire.exe" Then
prozess1 = proc
ReadValues(prozess1)
Exit Sub
End If
Next
End Sub

Private Sub ReadValues(ByVal Prozess1 As Process)
SpeedPointerWert = ReadLong(Prozess1, SpeedAdresse) + SpeedOffset1 + SpeedOffset2 + SpeedOffset3 + SpeedOffset4
TextBox1.Text = ReadLongPointer(Prozess1, SpeedPointerWert, SpeedOffset5, 2)

End Sub
Hoffe jemand weiss was..

Mfg. Easy :)
05/09/2013 13:18 snow#4
Ja, du hast das mit den Offsets nicht verstanden.

Grob übersetzt, Casting nicht vergessen: (*(*(*(*(GetModuleHandle(NULL) + 0x430) + 0x2f4) + 0x2f4) + 0x0) + 0x19e)
05/09/2013 13:45 EasyFarm#5
Der ursprüngliche Code jemand anderen hat bei ihm funktioniert. Jedoch mit 2 Offsets:

Quote:
Dim SpeedAdresse As String = "&H5F1E70"
Dim SpeedOffset1 As String = "&H4"
Dim SpeedOffset2 As String = "&H5B2"
Dim SpeedPointerWert As Long
Private Sub TimerActualize_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerReadAll.Tick
pList = System.Diagnostics.Process.GetProcesses
For Each proc As System.Diagnostics.Process In pList
If proc.ProcessName = "Solitaire.exe" Then
Prozess1 = proc
ReadValues(Prozess1)
Exit Sub
End If
Next
End Sub

Private Sub ReadValues(ByVal Prozess1 As Process)
SpeedPointerWert = ReadLong(Prozess1, SpeedAdresse) + SpeedOffset1
TextBoxSpeedAktuell.Text = ReadLongPointer(Prozess1, SpeedPointerWert, SpeedOffset2, 2)
End Sub
Da hab ich halt versucht meine 5 unterzubringen. Wenns geht würde ich auch bei Visual Basic bleiben.. Wie kann ich dort meine offsets einbauen? Addieren hat ja nicht geklappt..

Danke vielmals!
Mfg. Easy
05/17/2013 15:44 MrSm!th#6
#moved
05/17/2013 16:04 Padmak#7
Ähm... ist das der aktuellste DE-Client? Ansonsten ist der Movespeed sicherlich nicht so kompliziert zu erreichen, das war glaube ich ((playerptr + off1) + off2), maximal^^
Das was du brauchst, ist also das hier:
(untested, also keine Garantie)
Code:
uint16_t speed = (uint16_t)( *( (*(uint32_t*)playerptr + off1) + off2 ) );
Der Playerpointer ist btw. meistens so zwischen 0x6XXXXX und 0x7XXXXX (also metin2client.bin+1XXXXX oder 2XXXXX), niemals so hoch^^

Padmak
05/17/2013 16:23 Cambios#8
soll jetzt nicht böse klingen oder so aber.. wieso willst dich mit memory beschäftigen wenn du nicht einmal grundlagen von c++ beherrscht? Würde dir empfehlen dir ein Buch zu kaufen zu C++, oder Online Tutorials zu machen.

Du steigst ja auch nicht in ein Ferrari wenn du grad dabei bist deinen Führerschein zu machen, sondern kaufst dir erstmal ein billigeres Auto. Und in der Schule lernst du zunächst das kleine 1x1 bevor du mit dem großen anfängst.
Es hilft dir nicht weiter wenn du das jetzt mit Hilfe von anderen zusammen wurschtelst, dann aber das ganze nur durch Hilfe von anderen hinbekommen hast.
Lern erstmal die Grundlagen bitte :)
05/17/2013 19:22 Padmak#9
.. sprach der, der scheinbar gerade seinen ersten Bot schreibt und daran C++ lernt.. :D
Ich kann nur von mir sprechen, aber mein erstes Projekt in C++ war ein Switchbot für Metin2, war zwar technisch nicht.. berauschend, hat aber funktioniert und durch diese Erfolge habe ich dann auch die Lust gehabt weiterzumachen und aufzubauen.
Man sollte also nicht pauschal sagen, dass man so auf gar keinen Fall anfangen sollte
Für den ein oder anderen ist das sicher der richtige Weg

Padmak
05/18/2013 12:20 MrSm!th#10
Man sollte so auf keinen Fall anfangen.
05/19/2013 01:27 MineCore#11
Also dein Speedhack könnte so aussehen.
Das mit den Pointer k.p

void Speedhack()
{
*(float*)(PlayerPointer) = 200.00F;
}

Edit:
Eh zu den Pointer du musst den haupt Pointer finden ich glaube der ist sogar Level 3!
05/21/2013 21:52 Cambios#12
Quote:
Originally Posted by Padmak View Post
.. sprach der, der scheinbar gerade seinen ersten Bot schreibt und daran C++ lernt.. :D
Ich kann nur von mir sprechen, aber mein erstes Projekt in C++ war ein Switchbot für Metin2, war zwar technisch nicht.. berauschend, hat aber funktioniert und durch diese Erfolge habe ich dann auch die Lust gehabt weiterzumachen und aufzubauen.
Man sollte also nicht pauschal sagen, dass man so auf gar keinen Fall anfangen sollte
Für den ein oder anderen ist das sicher der richtige Weg

Padmak
Ich lerne damit nicht c++, sondern ich entwickle mich daran weiter.
Es ging mir halt drum das Pointer Basicwissen von C#/C++ eigendlich ist,
und in jedem anständigen Tut / Buch auch erklärt werden.
Man sollte halt erstmal Grundwissen haben bevor man anfängt mit sowas,
Du baust ja auch kein Haus ohne zu wissen worauf du achten musst das es dir nicht einstürzt.. oder?
05/22/2013 00:40 Padmak#13
Du hast schon recht, jedoch bin ich mir nicht sicher welche Rolle Pointer bei C# noch spielen.. Pointer an sich werden immer beschrieben, dieses Gecaste ala *(bla*) ist aber kein Basiswissen mehr sondern für normale Anwendungsprogrammierer eher untergeordneter Priorität. Da Reichen Referenzen/Dereferenzierungen eigentlich
Ich persönlich hab immer erst rumexperimentiert und dann nachgeschlagen, ist halt auch bisschen ne persönliche Sache.

Padmak