|
You last visited: Today at 05:45
Advertisement
[VB] Pointer auslesen (Nostale) Help
Discussion on [VB] Pointer auslesen (Nostale) Help within the .NET Languages forum part of the Coders Den category.
03/09/2011, 20:00
|
#1
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
[VB] Pointer auslesen (Nostale) Help
Ich frag mal die Programmierer unter euch,die vll nen Plan haben wie ich das hinkrieg.
Folgendes Problem :
Ich will die Hp Adresse : 007B11A8 mit den beiden Offsets : 4C,AC in VB zum laufen kriegen.
Mein Modul(Memory) sieht so aus :
Code:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function WriteFloatMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function ReadFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByRef buffer As Single, ByVal size As Int32, ByRef lpNumberOfBytesRead As Int32) As Boolean
Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public RBuff As Long
Public RBuff2 As Single
Public RBuff3 As Integer
Public Function ReadLongPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short, ByVal Offset2 As Short, ByVal Bytes As Integer)
Dim fullAddress As Long
Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)
If GameLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)
ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)
fullAddress = RBuff + Offset + Offset2
ReadProcessMemory(processHandle, fullAddress, RBuff3, Bytes, Nothing)
Return RBuff3
CloseHandle(processHandle)
End Function
So im Hauptprogramm bei Button 1:
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim p As Process() = Process.GetProcessesByName("NostaleX.dat")
If Not p.Length = 0 Then
Label2.Text = Memory.ReadLongPointer(p(0), &H7B11A8, 76, 172, "4") 'Process "p" , Adresse , Offset ,Offset2, Byte
Else
MsgBox("Nostale ist nicht geöffnet!")
End If
End Sub
Hier habt ihr die neuste Hp Adresse aus Nostale De :
'<?xml version="1.0"?>
'<CheatTable>
' <CheatEntries>
' <CheatEntry>
' <Description>"Nostale Hp 09.03.11"</Description>
' <Color>80000008</Color>
' <VariableType>4 Bytes</VariableType>
' <Address>007B11A8</Address>
' <Offsets>
' <Offset>4C</Offset>
' <Offset>AC</Offset>
' </Offsets>
' </CheatEntry>
' </CheatEntries>
'</CheatTable>
Hab mal versucht die Hex Zahlen in Dezimalzahlen zu schreiben scheint auch nicht zu funktionieren...
Manchmal bekomm ich ein Wert raus,der sich immer ändert und total falsch ist..
Hoffe jemand kann mir helfen
Ich habs nicht in den Code Bereich gepostet ,weils hier eh ein paar Experten gibt
|
|
|
03/09/2011, 21:41
|
#2
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Du mußt wenn alle als HEX-Angabe zusammenrechnen dann haste aber einen integer als Wert mußt du mit Convert zu Hex konvertieren fertig
Auf deutsch übergebe es an einen int32(das Ergebnis) und konvertiere den dann in einen String in HEX sonst haste ja kein A,B,C.. drin.
|
|
|
03/09/2011, 22:20
|
#3
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Ich versuchs mal , hoffe ich schaff es :P
Wenn nicht wär ein Beispiel ganz nett ;P
|
|
|
03/09/2011, 22:28
|
#4
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Da mußte deine Funktion ändern
Dim MeineAdresse As Int32 = &H7B11A8 + &H4C + &HAC ' = 8065696 als integer
Dim MeinPTR as String = Convert.ToString(MeineAdresse , 16) ' = 7b12a0 als HEX
Der aufruf in der Funktion ist dann Blabla("&H" & MeinPTR,..........etc)
|
|
|
03/10/2011, 08:59
|
#5
|
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
|
Muss man in VB echt diese unnötige Umwandlung in einen String machen? Ich dachte eine Zahl ist eine Zahl, egal ob diese im hexadezimalen, dezimalem oder dualem System vorliegt : o
|
|
|
03/10/2011, 12:26
|
#6
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Tut mir leid darin bin ich noch nicht so gut ...
Habs im Hauptprogramm geschrieben
Und meine Funktion so verändert 'Process "p" , Adresse(MeinPTR) , Byte
aber klappt immernoch nicht :s
|
|
|
03/10/2011, 13:33
|
#7
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Hatte dir gesagt das deine Funktion, die ReadLongPointer nicht grade gut ist.
Aber ich hab es mal so vorbereitet und zeig dir das es geht das du mehrere Offsets garnicht brauchst hab ich noch nie genutzt.
Müßtest nur halt mit indexof die ModuleBase von dem Module holen wo der Pointer drin liegt.
Schau dir mal das Vid an es ist möglich mit VB nicht nur mit Zahlen auch mit ganzen Bytearrays
|
|
|
03/10/2011, 15:25
|
#8
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Langsam begreif ich wie du das meinst
Also hab jetzt die Funktion
Code:
Public Function ReadLong(ByVal ProcessName As Process, ByVal Address As Integer)
Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)
If GameLookUp.Length = 0 Then
End
End If
Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)
ReadProcessMemory(processHandle, Address, RBuff, 4, Nothing)
CloseHandle(processHandle)
Return RBuff
End Function
Button 1
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim p As Process() = Process.GetProcessesByName("NostaleX.dat")
Dim MeineAdresse As Int32 = &H7B11A8 + &H4C + &HAC ' = 8065696 als integer
Dim MeinPTR As String = Convert.ToString(MeineAdresse, 16) ' = 7b12a0 als HEX
If Not p.Length = 0 Then
Label2.Text = Memory.ReadLong(p(0), MeinPTR)
'Label2.Text = Memory.ReadLongPointer(p(0), MeinPTR, 16) 'Process "p" , Adresse , Offset,Offset2, Byte
' Label2.Text = Memory.ReadLong(p(0), &H7717344)
Else
MsgBox("Nostale ist nicht geöffnet!")
End If
End Sub
End Class
Fehler : Ungültige Konvertierung von der Zeichenfolge 7b12a0 in Typ Integer.
Nur noch ein kleiner Fehler denk ich mal...eig hab ich doch angegeben das ich es als String ausgebe
Sry wenns Fragen über Fragen sind und danke,dass du dir soviel mühe mit dem Video gemacht hast -> Super nett
@edit ich probier weiter rum gleich hab ichs sicher
|
|
|
03/10/2011, 15:47
|
#9
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Wenn du garnicht klarkommst warte einfach etwas ich stelle den Trainer dann hier rein ich mach noch paar Funktionen rein das man einiges machen kann und ein Video wie man mit Olly die Spieletweaks findet das ist für Anfänger geeignet.
Ob es heute abend wird weiß ich noch nicht aber ich stelle ihn hier rein zumindest in die TuT-Bereich.
Mit WindowsHotkey hook die auf allen O/S funktionieren wirst du ja wenn dann sehen.
Werde ein Blanco reinstellen ohne Adressen und 1 mit Beispielen für CoD4 Singleplayer
|
|
|
03/10/2011, 15:54
|
#10
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Danke dir Man findet auch kein vernünftiges Tut im Inet deshalb wärs eh angebracht :P
|
|
|
03/10/2011, 16:14
|
#11
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Die Funktionen davon sind sehr leicht man kann mit der normalen Funktionen sie so ändern das man Floats.Int,Bytes undauch das Bytearray also sprünge ändern kann.
Allerdings setzt es VB 2010 vorraus in 2008 hab ich es probiert geht nicht das Framework 4.0 ist wirklich super geeignet dafür für alle O/S.
Hab ich mir mehr oder weniger von Funktionen in C++ abgeschaut
Andere frage wenn du deine Adesse oben in HEX Konvertiert hast ist das ergebnis genau das selbe wie in CE ?
Wenn ja und nichts passiert solltest du Vsual Basic als Admin starten und vllt noch DebugPrivileg setzen.
Dazu muss das ins Formload
Process.EnterDebugMode()
|
|
|
03/10/2011, 16:35
|
#12
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Es kommt ne lange zahl raus (121417616) ,die sich nicht verändert..
Ich arbeite eh mit Vb 10
|
|
|
03/10/2011, 16:43
|
#13
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Darf eigentlich nicht sein aber wie gesagt Adresse + Offset + Offset = Bullshit , wieso
in CE ist das gut man hat ja jetzt die Adresse die totale Ardresse nur schauen in welchen Module das ganze geschoss liegt.
Siehst du ja wie ich es im Video gemacht habe man brauch keine Offsets X-Offsets nur 1.
Da könnte man auch zu sagen vom Startpunkt bis zum Zielpunkt = Offset
Also ModuleBase + Offset(der Zielpunkt) = die totale Adresse so gehe ich immer vor ist einfacher find ich.
Wie das mit den Multioffsets aussieht weiß ich noch nicht ich werd es mir mal anschauen es kann sein das man eine Zwischensumme bilden muss.
Aber ich werde dir noch ein Video jetzt schnell machen und lasse mir mal die Adressen in den Integern Anzeigen und drunter in HEX so wie sie sein sollen da siehst du mal die unterschiede.
Werd wieder CoD4 als Bsp nehmen da kann ich das Fenster so schön klein machen das man alles sieht.
|
|
|
03/10/2011, 16:59
|
#14
|
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
|
Okay gut bin mal gespannt ..immer diese dummen offsets ohne läufts ja
@edit habs endlich hinbekommen und wie du sagtest braucht man nichtmals die offsets eintragen
dankeeeeeeeeeeeeeeee
|
|
|
03/10/2011, 17:16
|
#15
|
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
|
Doch 1 Offset brauchst du ganz sicher denke mal du hast Win7 die adressen ändern sich es ist aber immer an einer andern selben Stelle bei wenigen Spielen ist es Statisch.
Aber ich mach trotzdem das Video da siehst du wo es bei dir klemmt .
Ich hab es grade mal nur mit integer versucht ja das geht auch ist aber komisch weil die Zahlen so groß sind also Konvertieren muss man es nicht ich mach es aber sonst muss ich ja alles umrechnen das gefällt mir nicht
Naja VB ist da eh etwas komisch drin
|
|
|
|
|
Similar Threads
|
[VB] Pointer in Nostale auslesen
03/12/2011 - Nostale - 1 Replies
Ich frag mal die Programmierer unter euch,die vll nen Plan haben wie ich das hinkrieg.
Folgendes Problem :
Ich will die Hp Adresse : 007B11A8 mit den beiden Offsets : 4C,AC in VB zum laufen kriegen.
Mein Modul(Memory) sieht so aus :
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer,...
|
WoW Pointer mit Autoit auslesen
12/08/2010 - AutoIt - 9 Replies
Ich habe den 4byte wert von der z position von meinem eigenen Chara herausgefunden. Ich weiß das 4 Byte falsch sind aber das ist egal. Mir reicht auch ein 4 byte wert. Danach habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this adress. Alles So gelassen und OK geklickt. Ich habe eine Liste mit offsets und allem möglichen gefunden. Wenn ich diesen Pointer mit offsets aber in Autoit einbinde und mit memorypointerread auslese bekomme ich
0x00000017
als rückgabewert.
...
|
WoW Pointer mit Autoit auslesen
12/05/2010 - World of Warcraft - 0 Replies
Ich habe mit Cheat Engine 5.6 die werte von der Z position des eigenen Spielers herausgefunden. Anschließend habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this Adress gemacht. Ich bekam eine Liste mit den Offsets und den Werten.
Meine Werte sind alle 4 byte weil ich nicht weiß welche ich sonst nehmen soll. Das ist aber egal. Mit Cheat Engine klappt alles auch wenn es 4 byte sind.
Nun meine Frage. Ich binde die Offsets mit der Nomadmemory in Autoit ein. Wenn ich den Wert...
|
Pointer herrausgefunden, wie in C++ auslesen?
06/11/2010 - C/C++ - 1 Replies
Hallo,
ich habe für ein Spiel den Pointer für den Munitionswert gefunden.
Wie kann ich diesen jetzt so verwenden, dass ich mir dessen Wert in C++ anschauen kann?
Pointer-Adresse: 015470A8
bisher hab ich es in C++ so versucht:
DWORD *thefirst = (DWORD*)(0x015470A8);
|
(Autoit) Wie Pointer auslesen ?
10/13/2009 - General Coding - 6 Replies
Hiho...
Ich progge gerade an einem bot und habe nur ein problem...
Ich hab mit CE nen pointer für die HP gefunden...
In diesem fall: game.dat+0037CC28 offset: 13C
Hab aber bis jetzt keine funktionierende möglichkeit gefunden das in Autoit auszulesen...
Kann mir pls einer verraten wie das geht ?
|
All times are GMT +2. The time now is 05:45.
|
|