Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 07:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[VB] Pointer auslesen (Nostale) Help

Discussion on [VB] Pointer auslesen (Nostale) Help within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
bvz's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 260
Received Thanks: 266
Unhappy [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 :




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
bvz is offline  
Old 03/09/2011, 21:41   #2
 
P-a-i-n's Avatar
 
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.
P-a-i-n is offline  
Old 03/09/2011, 22:20   #3
 
bvz's Avatar
 
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
bvz is offline  
Old 03/09/2011, 22:28   #4
 
P-a-i-n's Avatar
 
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)
P-a-i-n is offline  
Old 03/10/2011, 08:59   #5
 
mydoom's Avatar
 
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
mydoom is offline  
Old 03/10/2011, 12:26   #6
 
bvz's Avatar
 
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
bvz is offline  
Old 03/10/2011, 13:33   #7
 
P-a-i-n's Avatar
 
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

P-a-i-n is offline  
Thanks
1 User
Old 03/10/2011, 15:25   #8
 
bvz's Avatar
 
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
bvz is offline  
Old 03/10/2011, 15:47   #9
 
P-a-i-n's Avatar
 
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
P-a-i-n is offline  
Thanks
1 User
Old 03/10/2011, 15:54   #10
 
bvz's Avatar
 
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
bvz is offline  
Old 03/10/2011, 16:14   #11
 
P-a-i-n's Avatar
 
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()
P-a-i-n is offline  
Old 03/10/2011, 16:35   #12
 
bvz's Avatar
 
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
bvz is offline  
Old 03/10/2011, 16:43   #13
 
P-a-i-n's Avatar
 
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.
P-a-i-n is offline  
Old 03/10/2011, 16:59   #14
 
bvz's Avatar
 
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
bvz is offline  
Old 03/10/2011, 17:16   #15
 
P-a-i-n's Avatar
 
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
P-a-i-n is offline  
Reply


Similar Threads 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 07:16.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.