Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 01:25

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

Advertisement



Visual Basic 2010 Hack (anders) erstellen

Discussion on Visual Basic 2010 Hack (anders) erstellen within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
Visual Basic 2010 Hack (anders) erstellen

Guten Tag leute,
ich habe in VB schon ein paar kleinere Games manipuliert. Sozusagen einfach die Values(Werte) geändert das war nicht so schwierig.
Ich habe mir eine Modul erstellt:

Code:
Module ReadWritingMemory
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer

    Private Declare Function WriteProcessMemory1 Lib "kernel32" Alias "WriteProcessMemory" (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 WriteProcessMemory2 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 Single
    Private Declare Function WriteProcessMemory3 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long

    Private Declare Function ReadProcessMemory1 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 ReadProcessMemory2 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
    Private Declare Function ReadProcessMemory3 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long

    Const PROCESS_ALL_ACCESS = &H1F0FF

    Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
            Next
            WriteInteger(Process, lvl, Value, nsize)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

    Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
            Next
            Dim vBuffer As Integer
            vBuffer = ReadInteger(Process, lvl, nsize)
            Return vBuffer
        Catch ex As Exception

        End Try
    End Function

    Public Function WriteDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Single, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
            Next
            WriteFloat(Process, lvl, Value, nsize)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

    Public Function ReadDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Single
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
            Next
            Dim vBuffer As Single
            vBuffer = ReadFloat(Process, lvl, nsize)
            Return vBuffer
        Catch ex As Exception

        End Try
    End Function

    Public Function WriteDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Long, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
            Next
            WriteLong(Process, lvl, Value, nsize)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

    Public Function ReadDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Long
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
            Next
            Dim vBuffer As Long
            vBuffer = ReadLong(Process, lvl, nsize)
            Return vBuffer
        Catch ex As Exception

        End Try
    End Function

    Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As Long, ByVal NOPNum As Integer)
        Dim C As Integer
        Dim B As Integer
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Sub
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Sub
        End If

        B = 0
        For C = 1 To NOPNum
            Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&)
            B = B + 1
        Next C
    End Sub

    Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As Long, ByVal Value As String)
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Sub
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Sub
        End If

        Dim C As Integer
        Dim B As Integer
        Dim D As Integer
        Dim V As Byte

        B = 0
        D = 1
        For C = 1 To Math.Round((Len(Value) / 2))
            V = Val("&H" & Mid$(Value, D, 2))
            Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&)
            B = B + 1
            D = D + 2
        Next C

    End Sub

    Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Integer, Optional ByVal nsize As Integer = 4)
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Sub
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Sub
        End If

        Dim hAddress, vBuffer As Integer
        hAddress = Address
        vBuffer = Value
        WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0)
    End Sub

    Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Single, Optional ByVal nsize As Integer = 4)
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Sub
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Sub
        End If

        Dim hAddress As Integer
        Dim vBuffer As Single

        hAddress = Address
        vBuffer = Value
        WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
    End Sub

    Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Long, Optional ByVal nsize As Integer = 4)
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Sub
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Sub
        End If

        Dim hAddress As Integer
        Dim vBuffer As Long

        hAddress = Address
        vBuffer = Value
        WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
    End Sub

    Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Integer
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Function
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Function
        End If

        Dim hAddress, vBuffer As Integer
        hAddress = Address
        ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0)
        Return vBuffer
    End Function

    Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Single
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Function
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Function
        End If

        Dim hAddress As Integer
        Dim vBuffer As Single

        hAddress = Address
        ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
        Return vBuffer
    End Function

    Public Function ReadLong(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Long
        If ProcessName.EndsWith(".exe") Then
            ProcessName = ProcessName.Replace(".exe", "")
        End If
        Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
        If MyP.Length = 0 Then
            MessageBox.Show(ProcessName & " isn't open!")
            Exit Function
        End If
        Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
        If hProcess = IntPtr.Zero Then
            MessageBox.Show("Failed to open " & ProcessName & "!")
            Exit Function
        End If

        Dim hAddress As Integer
        Dim vBuffer As Long

        hAddress = Address
        ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
        Return vBuffer
    End Function

End Module
und in der form mit einem einfachen:
Code:
WriteInteger("plugin-container", &HAdresse, 999)
die adresse geändert.
So jetzt habe ich für ein Spiel das ganze anderst gemacht...Ich habe mit CheatEngine auf : Find out what writes to this adaress.
Dann zum Beispiel geschossen. Dann bei dem Wert auf : Show dissambler.
Dann auf Tools und dann Auto Assemble. Dann Code Injection.
Und da stand dann z.b:
Code:
mov [ebx+00000154],ecx
und dass habe ich geändert zu:
Code:
add [ebx+00000154],10
Also wie kann ich sowas dann in VB machen?
Hilfreiche Antworten wären gut, weil ich brauche das dringend und möchte es für die Zukunft wissen.

Danke schonmal im Vorraus
Mit freundlichen Grüßen
Moritz
Moritz99 is offline  
Old 04/05/2013, 01:01   #2
 
'Heaven.'s Avatar
 
elite*gold: 1
The Black Market: 331/0/0
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
Kann dir leider nicht hekfen bei deinem Problem, aber du hast rin Modul und keine Klasse erstellt
'Heaven. is offline  
Old 04/05/2013, 01:30   #3
 
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
Du musst eine Adresse überschreiben.
Die Adresse enthält den ECX Opcode. Müsste CheatEngine dir eig. anzeigen.
Ansonsten nimmst du OllyDBG als Debugger.
qkuh is offline  
Old 04/05/2013, 11:58   #4
 
elite*gold: 0
Join Date: Jan 2010
Posts: 140
Received Thanks: 6
Sorry hab mich verschrieben xD aber wenn man den Code bei einer Klasse hat funktioniert es genauso

Stimmt auf die Idee mit dem Überschreiben bin ich nicht gekommen... Ich habe aber leider keine Ahnung wie ich die Adresse( ich nehme an mit einer 10) in Visual Basic überschreiben soll.
Moritz99 is offline  
Old 04/05/2013, 12:34   #5


 
Jeoni's Avatar
 
elite*gold: 966
Join Date: Apr 2010
Posts: 1,105
Received Thanks: 681
Die Orginalinstruction sieht in Opcodes so aus:
Code:
89 8B 54 01 00 00
Wir sehen hier 6 Bytes, welche also "mov [ebx+00000154],ecx" bedeuten.

Deine veränderte Anweisung (add [ebx+00000154],10) sieht dagegen so aus:
Code:
83 83 54 01 00 00 10
Wie leicht zu sehen ist, benutzt diese Anweisung 7 Bytes, also ein Byte mehr als die Orginal-Anweisung.
Da aber immer Anweisung direkt hinter Anweisung steht, wirst du um einen Hook bzw um eine Codecave sicher nicht herum kommen, wenn du die Programmstabilität nicht gefährden willst. Andernfalls überschreibst du das erste Byte der nächsten Anweisung und wirfst damit quasi alles über den Haufen. Allgemein zu Codecaves kann ich dir empfehlen. Der Programmierschwerpunkt liegt zwar auf AutoIt, lässt sich aber nach VB.net portieren und die Theorie dahinter ist eh sprachunabhängig.

Bei einer gleichlangen oder kürzeren Anweisung (Rest ließe sich dann ja mit NOPs füllen), kann man einfach die entsprechenden Opcodes seiner veränderten Anweisung per WriteProcessMemory auf die Adressse der Orginalanweisung schreiben (die dürftest du durch "Find out what accesses this Address" oder so ja haben).
kam bei Google raus und sieht für diesen Fall nützlich aus. Andernfalls kann ich dir noch managed FASM an's Herz legen, damit dürfte es auch klappen, denke ich.

Hoffe, dass es dir etwas hilft
Jeoni

P.S.: Bei weiteren Fragen kannst du mir gerne eine PN schreiben.
Jeoni is offline  
Reply


Similar Threads Similar Threads
Chat mit Visual Basic 2010 erstellen?
08/15/2011 - .NET Languages - 9 Replies
Liebe Coder, wie schon der Titel sagt, geht es um einen Chat den ich gerne via Visual Basic 2010 erstellen möchte, jedoch finde ich recht wenig dazu. Danke im Voraus und bitte keine Skurrile Antworten.
Visual Basic/Hack Erstellen
05/02/2011 - .NET Languages - 6 Replies
Also ich bin Grade an Einem Hack dran den ich Er stellen möchte nun habe ich den code eingegeben heir meine frage was muss ich alles ausfüllen? was auf den screen zusehen ist?:D ImageBanana - HELP.png und wie mache ich daraus eine Datei?:D
Hack erstellen mit c++ oder visual-basic
08/30/2010 - .NET Languages - 31 Replies
Hey leute hiermit sprech ich mal alle leute die mit dem obengenannten thema erfahrung haben. Habe mal vor 1 woche mir c++ und visual basic runtergeladen und bissel was selbst versucht. So wie ich höre schreibt ihr eure hacks mit diesen programmen. Soweit ich weiss ermittelt ihr die hacks zuerst mit cheat engine. Das ist kein problem für mich, kenne mich mit cheat engine bestens aus, und weiss auch wie ich mich selbst mit hacks zu versorgen habe.
Visual Basic CA Hack erstellen
07/18/2010 - .NET Languages - 0 Replies
Hallo Leute ich will einen ca Hack Erstellen Mit Boxes SpeedHack chams Wie Mache ich sowas mit Visual Basic Boxes Ist Doch Nicht soschwer Oder? Mein Ftp Server Name:MoonMen2010
Hack code in Visual basic c++ express 2010 einfügen?
05/08/2010 - .NET Languages - 15 Replies
Also ich habe einen Hack erstellt, für metin2. Der läuft auch recht gut, aber ich würde ihn gerne schön gestalten, also habe ich auch noch ein Programm dafür mit visual basic c++ express 2010 gemacht hier screenshot: http://img28.imageshack.us/img28/2580/unbenannt2j d.png Naja ok und nun würde ich gerne wissen, wie man beides zusammen fügt? Also mal hier der hack code: HotKeySet ( "{F5}" , "Start" ) HotKeySet ( "{F6}" , "Ende" ) HotKeySet ( "{F7}" , "Pause" ) while 1



All times are GMT +1. The time now is 01:25.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

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