Register for your free account! | Forgot your password?

You last visited: Today at 03:48

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

Advertisement



[TuT] Hack-Injector

Discussion on [TuT] Hack-Injector within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 100
Join Date: Sep 2010
Posts: 1,707
Received Thanks: 1,084
[TuT] Hack-Injector


TuT : Hack-Injector

__________________________________________

1.0 Einleitung
1.1 Benötigte Tools
2.0 Theorie
2.1 Der Injector
__________________________________________

__________________________________________

1.0 Einleitung

Ich werde in diesem Tutorial alles so einfach wie möglich zu erklären,
und kein Fachchinesisch verwenden.
Daher sollte das Tutorial auch für Einsteiger bestens geignet sein.
Den Hack-Injector werde ich in Visual Basic .Net schreiben.
Bitte beachtet, dass dieses Tutorial nicht ohne meine Erlaubnis kopiert
werden darf.

__________________________________________

__________________________________________

1.1 Benötigte Tools

Um den Hack zu schreiben, braucht ihr 3 Dinge:

Zeit & Geduld
Grundlegende Visual Basic .Net Kenntnisse

__________________________________________

__________________________________________

2.0 Theorie

Ein Injector injeziert (daher der Name) einen Hack (meistens ein Dynamic Link Library) in einen Prozess.
z.B. bei Warrock:
Der Injector injeziert den Hack (Hack.dll) in den Prozess (Warrock.exe).

Das ganze kann ziemlich einfach realisiert werden.
Man benötigt dazu einige API-Aufrufe und grundlegende Visual Basic Kenntnisse.
Ich werde nachfolgend alles genau Kommentieren. So sollte es zu keine Verständniss-Schwierigkeiten kommen.

__________________________________________

__________________________________________

2.1 Der Injector

Als erstes erstellen wir in der Entwicklerumgebung (Visual Basic 2010 EE) ein neues Projekt.



Nun passen wir die Form-Eigenschaften wie z.B. Icon, Formname usw. an, womit ihr bereits Erfahrung haben solltet.
Sobald ihr fertig seit, sollte es so aussehen:



Jetzt müssen wir einige Steuerelemente erstellen:
Label: lblHack
Label: lblProcess
Textbox: txtHack
Textbox: txtProcess
Button: cmdInject
Timer: tmInject

Beim Timer setzen wir den Interval noch auf 50.
Nun sieht es in etwa so aus:



Das Design haben wir nun.
Jetzt kommt es zum etwas anspruchsreicheren Teil.
Zum programmieren.

Zunächst brauchen wir folgende API-Funktionen.
(Diese kommen direkt unter die Public Class Form1).

Code:
Private TargetProcessHandle As Integer
Private pfnStartAddr As Integer
Private pszLibFileRemote As String
Private TargetBufferSize As Integer

Public Const PROCESS_VM_READ = &H10
Public Const TH32CS_SNAPPROCESS = &H2
Public Const MEM_COMMIT = 4096
Public Const PAGE_READWRITE = 4
Public Const PROCESS_CREATE_THREAD = (&H2)
Public Const PROCESS_VM_OPERATION = (&H8)
Public Const PROCESS_VM_WRITE = (&H20)

Public Declare Function ReadProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer

Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
ByVal lpLibFileName As String) As Integer

Public Declare Function VirtualAllocEx Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpAddress As Integer, _
ByVal dwSize As Integer, _
ByVal flAllocationType As Integer, _
ByVal flProtect As Integer) As Integer

Public Declare Function WriteProcessMemory Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As String, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer

Public Declare Function GetProcAddress Lib "kernel32" ( _
ByVal hModule As Integer, ByVal lpProcName As String) As Integer

Private Declare Function GetModuleHandle Lib "Kernel32" Alias
"GetModuleHandleA" ( _
ByVal lpModuleName As String) As Integer

Public Declare Function CreateRemoteThread Lib "kernel32" ( _
ByVal hProcess As Integer, _
ByVal lpThreadAttributes As Integer, _
ByVal dwStackSize As Integer, _
ByVal lpStartAddress As Integer, _
ByVal lpParameter As Integer, _
ByVal dwCreationFlags As Integer, _
ByRef lpThreadId As Integer) As Integer

Public Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Integer, _
ByVal bInheritHandle As Integer, _
ByVal dwProcessId As Integer) As Integer

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Integer

Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" ( _
ByVal hObject As Integer) As Integer
Gut, die API Funktionen brauchen wir jetzt, um die eigentliche Injection vorzunehmen.
Die Injection schreiben wir in eine eigene Sub.
So können wir sie später perfomanter verwenden.

Code:
Private Sub Inject()
        Dim TargetProcess As Process() = Process.GetProcessesByName(txtProcess.Text) ' Der Ziel Prozess
        Dim Rtn As Integer
        Dim LoadLibParamAdr As Integer

        tmInject.Stop() ' Den Injection-Timer stoppen

        Try
            TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id) ' Den Ziel-Process öffnen
            pszLibFileRemote = txtHack.Text ' Die Hack-DLL
            pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA") ' Die Start-Adresse ermitteln
            TargetBufferSize = 1 + Len(pszLibFileRemote)
            LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE) 
            Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0) 
            CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
            CloseHandle(TargetProcessHandle) ' Injector aus dem Prozess "entfernen"

        Catch ex As Exception ' Falls ein Fehler auftritt
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
            Me.Close()
        End Try
End Sub


Jetzt sind wir gleich fertig.
Wir müssen noch im Tick-Event des Timers 'tmInject' die Sub aufrufen:

Code:
Private Sub tmInject_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmInject.Tick
        Call Inject() ' Die Injection-Sub aufrufen
End Sub
Außerdem müssen wir jetzt noch beim cmdInject_Click-Event den Timer 'tmInject' starten:

Code:
Private Sub cmdInject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInject.Click
        tmInject.Start() ' Den Timer starten
End Sub
Nun sind wir fertig.
Ihr könnt den Injector nun beliebig erweitern.
Zum Beispiel: Automatisches schließen nach der Injection, AutoInject, Hack / Process Saving usw.

Ich hoffe das Tutorial war hilfreich.
Ein Thanks tut auch nicht weh.

Ich habe den Sourcecode als Projekt im Anhang hinzugefügt.

__________________________________________
Attached Files
File Type: rar Injector.rar (356.7 KB, 512 views)
Anfang! is offline  
Thanks
27 Users
Old 10/24/2010, 12:48   #2
 
elite*gold: 1
Join Date: Sep 2010
Posts: 2,160
Received Thanks: 643
Nice Tutorial, werde mich auchmal ran machen.
.Tyccinuy! is offline  
Thanks
1 User
Old 10/24/2010, 13:43   #3


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,378
Received Thanks: 7,996
Nettes Tutorial, wäre aber vllt nicht von Nachteil, wenn du zumindest mal so grundlegend erklären würdest, das diese "Inject" Funktion überhaupt genau macht. Ich denke, dass das die Anfänger (an die sich das Tutorial ja wendet) vmtl recht wenig interessieren wird, aber imo sollte man trotzdem einfach wissen, was der Code den man verwendet überhaupt tut - auch als Anfänger ;p
Ende! is offline  
Thanks
3 Users
Old 10/26/2010, 15:58   #4
 
K1ng106's Avatar
 
elite*gold: 79
Join Date: Jul 2010
Posts: 419
Received Thanks: 27
Das Tutorial ist schlecht gemacht da du nicht viel erklärst!

PS: Beim ersten code sind Fehler drinnen!
K1ng106 is offline  
Old 10/26/2010, 16:03   #5
 
elite*gold: 100
Join Date: Sep 2010
Posts: 1,707
Received Thanks: 1,084
Es sind keine Fehler drinnen, da ich es natürlich selbst getestet habe
Naja, bei API Deklarationen gibt es nicht wirklich viel zu erklären.
Anfang! is offline  
Old 10/26/2010, 16:20   #6
 
K1ng106's Avatar
 
elite*gold: 79
Join Date: Jul 2010
Posts: 419
Received Thanks: 27
Bei mir sind aber Fehler drinnen!

In dem berreich sind die Fehler:
Code:
Private Declare Function GetModuleHandle Lib "Kernel32" Alias
"GetModuleHandleA" ( _
ByVal lpModuleName As String) As Integer
K1ng106 is offline  
Old 10/26/2010, 21:42   #7
 
elite*gold: 100
Join Date: Sep 2010
Posts: 1,707
Received Thanks: 1,084
Wo bitte ist da ein Fehler?
Das angehängte Beispielprojekt funktioniert und ist der selbe Code.
Hast du eventuell "Option Strict On"?
Anfang! is offline  
Old 10/26/2010, 22:42   #8
 
K1ng106's Avatar
 
elite*gold: 79
Join Date: Jul 2010
Posts: 419
Received Thanks: 27
Quote:
Originally Posted by Anfang! View Post
Wo bitte ist da ein Fehler?
Das angehängte Beispielprojekt funktioniert und ist der selbe Code.
Hast du eventuell "Option Strict On"?
Puhh.. Weiß ich garnicht!
Aber bei mir wurden hier Fehler angeszeigt:
Code:
Alias
"GetModuleHandleA"
K1ng106 is offline  
Old 10/27/2010, 19:24   #9
 
elite*gold: 100
Join Date: Sep 2010
Posts: 1,707
Received Thanks: 1,084
Hm.. Kannst mal einen Screenshot davon machen?
Bei mir gibt es keine Fehler.
Anfang! is offline  
Old 10/28/2010, 20:05   #10
 
K1ng106's Avatar
 
elite*gold: 79
Join Date: Jul 2010
Posts: 419
Received Thanks: 27
Entschuldige aber hat etwas lange gedaurt!
Hier der Screen:

MFG K1ng106
K1ng106 is offline  
Old 10/29/2010, 23:22   #11
 
K1ng106's Avatar
 
elite*gold: 79
Join Date: Jul 2010
Posts: 419
Received Thanks: 27
/push
K1ng106 is offline  
Old 10/31/2010, 02:05   #12
 
elite*gold: 0
Join Date: Apr 2010
Posts: 40
Received Thanks: 5
Getestet und funtkoniert.

Nice
Amphy94 is offline  
Old 01/01/2011, 20:15   #13
 
elite*gold: 0
Join Date: Nov 2010
Posts: 700
Received Thanks: 507
Bei mir funz es auch nit

kann mir das mal jemand das mal erklären
ich hatte den selben fehler also brauche ich keine screens
supercracker13 is offline  
Old 01/02/2011, 15:25   #14
 
elite*gold: 0
Join Date: May 2008
Posts: 132
Received Thanks: 120
sry, aber ich finde das ist kein tut, sondern eine Einladung zum C&P, das sieht man auch an den anderen Antworten, sorry K1ng106, aber wenn du noch nicht mal weißt, wie man eine API Funktion aufruft, geschweigedenn einen Zeilenumbruch zu entfernen, dann solltest du verdammt nochmal anfangen die sprache zu lernen!

wozu wird ein timer benötigt ? Wenn man einmal eine dll injiziert hat, die einen Thread im Fremdprozess startet, dann läuft dieser für gewöhnlich durchgehend, warum sollte man die dll im Intervall von 50 ms durchgehend injizieren ?
Noch etwas, du holst die API Funktionen, die du garnicht verwendest, zB ReadProcessMemory
krustx is offline  
Old 01/18/2011, 14:35   #15

 
xEncounter's Avatar
 
elite*gold: 22
Join Date: Nov 2009
Posts: 1,552
Received Thanks: 361
@K1ng106

#reported cause doublepost

lese dir bitte in Ruhe die Forenregeln durch.
xEncounter is offline  
Reply


Similar Threads Similar Threads
Xinject-Multi DLL.Injector {Better then OMFGZ DLL Injector.} Rep+Thank.(leeach)
01/09/2010 - Soldier Front Hacks, Bots, Cheats & Exploits - 5 Replies
Hi Welcome to X1nject The Best Multi DLL injector. Xinject-Multi DLL.Injector {Better then OMFGZ DLL Injector.} What this dose? Injects Any "X" amount off DLL'S into a Program. Stable+Trust Worthy. Easily Inject Your Faviroute Hacks. Steps:Click Here For Mediafire Download Link + GzP Attachment Availble



All times are GMT +1. The time now is 03:48.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.