|
You last visited: Today at 20:34
Advertisement
VB.net Frage zum Pointer schreiben
Discussion on VB.net Frage zum Pointer schreiben within the General Coding forum part of the Coders Den category.
03/31/2013, 13:55
|
#1
|
elite*gold: 5
Join Date: Mar 2012
Posts: 1,007
Received Thanks: 498
|
VB.net Frage zum Pointer schreiben
Hallo ich habe ein Problem und zwar habe ich jetzt für ein Spiel mit Visual Basic 2010 Express etwas geschrieben und zwar einen Pointer. Er nimmt den Prozess, sucht die Adresse die ich angegeben habe und ändert die Value in meine angegebene Value.
Nur leider klappt das nicht weil das Spiel ein Hackschild nutzt was den kompletten Prozess versteckt. Somit findet VB den Prozess nicht, was kann man dagegen tun?
Game Guard wird als Schutz verwendet...
Mit freundlichen Grüßen...
|
|
|
03/31/2013, 20:30
|
#2
|
elite*gold: 35
Join Date: Apr 2011
Posts: 800
Received Thanks: 214
|
Könntest du bitte mal deinen Code posten?
|
|
|
03/31/2013, 21:00
|
#3
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Werd aus deiner Einleitung mit Pointer etc nicht wirklich schlau ? 
Meinst du du beschreibst eine Variable für die du einen Pointer hast oder beschreibst du einen Pointer direkt *confused*
Hab leider keine Ahnung von Hackschield, nie mit gearbeitet, aber nach kurzem überfliegen wie es arbeitet sag ich mal .. viel Spaß
Es injected sich wohl selbst in alle Processe und nutzt einen Treiber um den Kernel selbst zu manipulieren
Ohne auf irgendwelche Fallstricke zu achen würd ich wohl zuerst so versuchen.
Den Kernel von der Festplatte in mein Programm mappen
Die Nötigen Funktionen von dort aufrufen
Und dann ganz fest die daumen drücken das man nix übersehn hat :P
|
|
|
04/01/2013, 01:26
|
#4
|
elite*gold: 5
Join Date: Mar 2012
Posts: 1,007
Received Thanks: 498
|
Module:
Module Trainermodul
' Deklarationen
Private process_id As Int32 = 0
Private Const ACCESS_RIGHTS_ALL = &H1F0FFF
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Int32, ByVal bInerhitHandle As Int32, ByVal dwProcessId As Int32) As Int32
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Int32) As Int32
Private Declare Function WPM Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Byte, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Byte
Private Declare Function WPM Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Int32, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Int32
Private Declare Function WPM Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Int64, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Int64
Private Declare Function RPM Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Byte, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Byte
Private Declare Function RPM Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Int32, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Int32
Private Declare Function RPM Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Int32, ByVal lpBaseAddress As Int32, ByRef lpBuffer As Int64, ByVal nSize As Int32, ByRef lpNumberOfBytesWritten As Int32) As Int64
Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, ByVal dwSize As IntPtr, ByVal flAllocationType As Integer, ByVal flProtect As Integer) As IntPtr
Declare Function VirtualProtectEx Lib "kernel32.dll" (ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, ByVal dwSize As IntPtr, ByVal newProtect As Integer, ByRef oldProtect As Integer) As Boolean
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal Handle As Int32, ByVal Address As Int32, ByRef Value As Long, ByVal Size As Int32, ByRef BytesWritten As Int32) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal Handle As Int32, ByVal Address As Int32, ByRef Value As Long, ByVal Size As Int32, ByRef BytesWritten As Int32) As Long
' ProzessID finden
Public Function GetProcessId(ByVal ProcName As String)
Dim Processes() As Process = Process.GetProcesses
Dim process_name As String
Dim i As Byte
For i = LBound(Processes) To UBound(Processes)
process_name = Processes(i).ProcessName
If process_name = ProcName Then
process_id = Processes(i).Id
Return process_id
End If
Next
End Function
#Region "Write"
' 1 Byte in den Prozess schreiben
Public Sub Write_Byte(ByVal address As Int32, ByVal value As Byte)
Dim process_handle As Int32
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
WPM(process_handle, address, value, 1, 0)
End If
CloseHandle(process_handle)
End Sub
' 4 Bytes in den Przess schreiben
Public Sub Write_Long(ByVal address As Int32, ByVal value As Int32)
Dim process_handle As Int32
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
WPM(process_handle, address, value, 4, 0)
End If
CloseHandle(process_handle)
End Sub
' 8 Bytes in den Przess schreiben
Public Sub Write_Float(ByVal address As Int32, ByVal value As Int64)
Dim process_handle As Int32
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
WPM(process_handle, address, value, 8, 0)
End If
CloseHandle(process_handle)
End Sub
' Für die CodeInjection
Public Sub autopatcher(ByVal address As Int32, ByVal value As Byte())
Dim i As Byte
For i = LBound(value) To UBound(value)
Write_Byte(address + i, value(i))
Next
End Sub
#End Region
#Region "Read"
' 1 Byte auslesen
Public Function Read_Byte(ByVal address As Int32) As Byte
Dim process_handle As Int32, value As Byte
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
RPM(process_handle, address, value, 1, 0)
End If
CloseHandle(process_handle)
Return value
End Function
' 4 Byte auslesen
Public Function Read_Long(ByVal address As Int32) As Int32
Dim process_handle As Int32, value As Int32
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
RPM(process_handle, address, value, 4, 0)
End If
CloseHandle(process_handle)
Return value
End Function
' 8 Byte auslesen
Public Function Read_Float(ByVal address As Int32) As Int64
Dim process_handle As Int32, value As Int64
process_handle = OpenProcess(ACCESS_RIGHTS_ALL, False, process_id)
If process_handle <> 0 Then
RPM(process_handle, address, value, 8, 0)
End If
CloseHandle(process_handle)
Return value
End Function
#End Region
#Region "Memory Function"
' Speicher hinzufügen
Sub AllocMem(ByVal ProcessName As String, ByVal AddressOfStart As Integer, ByVal SizeOfAllocationInBytes As Integer)
For Each p As Process In Process.GetProcessesByName(ProcessName)
Const MEM_COMMIT As Integer = &H1000
Const PAGE_EXECUTE_READWRITE As Integer = &H40
Dim pBlob As IntPtr = VirtualAllocEx(p.Handle, New IntPtr(AddressOfStart), New IntPtr(SizeOfAllocationInBytes), MEM_COMMIT, PAGE_EXECUTE_READWRITE)
If pBlob = IntPtr.Zero Then Throw New Exception
p.Dispose()
Next
End Sub
' Schreibschutz von Speicher entfernen
Sub RemoveProtection(ByVal ProcessName As String, ByVal AddressOfStart As Integer, ByVal SizeToRemoveProtectionInBytes As Integer)
For Each p As Process In Process.GetProcessesByName(ProcessName)
Const PAGE_EXECUTE_READWRITE As Integer = &H40
Dim oldProtect As Integer
If Not VirtualProtectEx(p.Handle, New IntPtr(AddressOfStart), New IntPtr(SizeToRemoveProtectionInBytes), PAGE_EXECUTE_READWRITE, oldProtect) Then Throw New Exception
p.Dispose()
Next
End Sub
#End Region
End Module
Source:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
My.Settings.config = TextBox1.Text
My.Settings.Save()
My.Settings.Reload()
Dim amunt As String = TextBox1.Text
Try
Write Integer("Prozess" ,&H"Cheat Engine Adresse" ,amunt
Catch ex As Exception
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = My.Settings.config
End Sub
End Class
Bei der Cheat Engine Adresse lasse ich dann die ersten 2 Zeichen weg,
die Value wird ja dann einfach geändert in das was in TextBox1 steht..
Ist das richtig?^^
|
|
|
04/01/2013, 03:01
|
#5
|
elite*gold: 35
Join Date: Apr 2011
Posts: 800
Received Thanks: 214
|
Vlt hilft der, weis nicht ob er noch geht aber versuchen kann man es ja. . .
|
|
|
04/01/2013, 07:37
|
#6
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Try, Catch und nichts im Catch machen tztztz :P
Aber ja es sollte funktionieren, der Grund warum es das nicht tut(angenommen Process und Adresse stimmen) ist das Hackshield die Imports die du nutzt hooked
|
|
|
04/01/2013, 15:11
|
#7
|
elite*gold: 5
Join Date: Mar 2012
Posts: 1,007
Received Thanks: 498
|
Quote:
Originally Posted by .AppleTree.
Vlt hilft der, weis nicht ob er noch geht aber versuchen kann man es ja. . .
|
Nein das hilft mir nicht wirklich weiter^^
Quote:
Originally Posted by dready
Try, Catch und nichts im Catch machen tztztz :P
Aber ja es sollte funktionieren, der Grund warum es das nicht tut(angenommen Process und Adresse stimmen) ist das Hackshield die Imports die du nutzt hooked
|
Und was kann ich dagegen tun?
|
|
|
04/01/2013, 16:25
|
#8
|
elite*gold: 35
Join Date: Apr 2011
Posts: 800
Received Thanks: 214
|
In wiefern hilf dir das Tool nicht? Funktioniert es nicht? Schlussendlich musst du sowieso einen Bypass haben sonst geht da eh nix.
|
|
|
04/01/2013, 16:53
|
#9
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Ich hoffe du verstehst das jetzt nicht als angriff, aber wenn du Fragst was du dagegen tun kannst ist recht offensichtlich das du nochnicht die nötigen Fertigkeiten hast um es zu tun
Ein Hook funktioniert in etwa so
Orginal
Dein Programm importiert eine Funktion(ReadMemory)
Dein Programm ruf sie in der Improtierten Libary auf ( Readmemory(a,b) )
Die Libary gibt dir die Gewünschten Daten zurück
Program <-> Dll
Hooked
Dein Programm importiert die Libary
Eine Dll wird von außerhalb in deinen Process geladen
Sie hat eine Funktion die sich die Imports ansieht
Sie sieht die ReadMemory Function
Sie ändert den Import ab auf sich selbst
Dein Programm ruf Readmemory auf
Die Dll bekommt nun den Aufruf
Ruft die eigentliche Funktion auf
gibt Daten zurück
Programm <-> hook <-> dll
Du siehst also wenn eine Funktion gehooked ist hat man im Prinzip die Kontrolle darüber
Z.b. du könntest nun schauen versucht die Readmemory Function von Process xyz zu lesen ? Wenn ja gib einen Fehler zurück.
Ansatzpunkte wären also
a) Den hook komplett entfernen
b) den hook selbst hooken
danach dafür sorgen das Hackshield selbst nichts davon mitbekommt
Hoffe das ganze war einigermassen Verständlich, ist etwas schwer zu erklären ohne Endlos auszuholen
Das ganze ist technisch gesehen extrem vereinfach dargestellt und es gibt unmengen wege wie genau man es machen kann.
|
|
|
04/02/2013, 00:02
|
#10
|
elite*gold: 5
Join Date: Mar 2012
Posts: 1,007
Received Thanks: 498
|
Nein ein Angriff ist das nicht, gebe ja dazu das ich keine Ahnung habe...
Dann werde ich mal gucken das ich das irgendwie packe^^
|
|
|
 |
Similar Threads
|
[HOW TO] Mit AutoIT Hacks schreiben mit Pointer!
03/08/2015 - Coding Tutorials - 25 Replies
<<TUTORIAL>>
Mit AutoIT Hacks schreiben mit Pointer!
=> Was wollen wir machen?
Wir wollen einen Hack programmieren z.b. für 4Story!
Der beim Drücken des On Buttons den Wert aus der Inputbox liest und sich die Farbe der Graphic auf Grün ändert. Beim drücken des Off Buttons ändert sich der Wert wieder auf den Ursprünglichen Wert.
=> Wie geht es los?
Mit einer einfachen GUI man kan aber auch Hacks programmieren ohne GUI aber ich zeige euch hier mit GUI.
|
[HILFE] CE Pointer in Autoit schreiben
02/02/2013 - AutoIt - 0 Replies
Guten Morgen Leute,
ich wollte heute anfangen zu lernen, wie man die Pointer von CE in Autoit richtig einügt. Ein paar Tut habe ich mir schon angeguckt, allerdings habe ich noch viele Fragen dazu. Es wäre sehr nett wenn mir jemand helfen könnte, am besten über Skype.
Skype: framewhere
Mfg. -*
|
[C#]Pointer Wert lesen, schreiben und Code Inject
02/23/2012 - .NET Languages - 0 Replies
Kann mir jemand an einem Beispiel Code zeigen wie man Pointer Werte auslesen kann oder auch schreiben. Und Wie man Code Injecten kann^^.
|
[Autoit]Pointer auslesen/schreiben
02/22/2011 - AutoIt - 8 Replies
hallo ich versuch derzeit es hinzubekommen mit au3 pointer auszulesen.
dazu benutzt ich die
Improved _Mem() UDF's - AutoIt Forums
und dementsprechend
_MemoryPointerWrite
das beispiel an dem ich es versuche is der 8te abschnitt des offieziellen ce tuts,
ich hab den static pointer und entsprechend die offsets
das pw dafür ist
|
Frage: Wie findet man zB UG Pointer?Speed pointer?
03/30/2010 - Kal Online - 2 Replies
kann mir einer sagen wie man UG/Speed pointer finden kann usw^^´ß#
|
All times are GMT +1. The time now is 20:35.
|
|