.dll Injection durchführen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Alex2000.

    .dll Injection durchführen

    Moin,

    ich möchte eine .dll Infection durchführen, aber ich möchte keine internen Werte verändern sonder ich möchte die grafische Oberfläche verändern
    Als Übung möchte ich z.B. einen Punkt in einer Ecke anzeigen lassen

    Das meiste was ich gefunden habe, wurde mit der Begründung illegales gesperrt (Wobei ich nicht verstehe was daran illegal ist)



    Mfg.
    SAR

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SAR-71“ ()

    Erstmal heißt das "Injection", nicht "Infection" :D
    Dann ist DLL-Injection nicht unbedingt "illegal", aber verpönt, da diese Methode mehr als häufig von bösartigen Programmen benutzt wird, um laut Wikipedia "Code unter dem Deckmantel eines anderen Programms auszuführen".
    Außerdem ist das eine Methode für das Hacken von Multiplayer-Spielen, um z.B. im Spiel Warrock Moonjumps machen zu können.
    Nur zur Info.
    de.wikipedia.org/wiki/DLL-Injection
    Meine Frage muss man nicht unbedingt mit einem Code beantworten...

    Mit welchem Satz habe ich bitte gesagt das ich C&P haben will?
    Richtig, mit gar keinem, also wenn du Informationen zum Thema hast, dann bitte ich dich auch dementspreche Beiträge zu posten...


    Mfg.
    SAR
    Hi
    Ich gehe mal davon aus, dass du das Memory von einem Programm verändern willst, denn die graphische Oberfläche ist auch im Speicher abgelegt - vorausgesetzt, es ist keine DirectX-Anwendung. Gib mal bitte mehr Informationen über das Spiel/ das Programm. Einen Inject für die Dll zu programmieren ist nicht ganz einfach. Dabei musst du genaue Daten über die Dll haben, wie Struktur, in welchem Abstand sich die Render-Methoden befinden usw.. Wenn du natürlich diese Daten besitzt, kannst du sie eventuell auf dein Programm umleiten. Genaueres dazu kann ich allerdings nicht sagen, da ich es noch nie ausprobiert habe. Hilfreich wäre es schon mal zu wissen, ob es sich bei dem betroffenen Programm um ein .NET-Assembly handelt oder ob es nicht verwalteter Code ist und wie die Oberfläche gestaltet ist.

    Gruß
    ~blaze~
    Es muss aber auch eine Möglichkeit geben, ohne diese Informationen (Es sei denn, man diese Informationen voher auslesen)

    Kennst du STEAM? Du kannst dort die Spiele (Egal welches) "hinzufügen"
    Nachdem dem Start kannst du diesen Spiel starten, dann mit einem Tastenkürzel das STEAM-Interface öffnen (Dabei ist man noch Spiel)


    Mfg.
    SAR
    Ich denke nicht, dass Steam eine DirectX-Anwendung ist. Außerdem glaube ich, dass sie in C++ programmiert wurde. Nur der Ingame-Modus ist denke ich mal mit DirectX erstellt (falls dieser nicht zur Source-Engine gehört). Allerdings werde ich dir bei dieser Software auf keinen Fall für einen Inject helfen, da man bei dem Programm nicht nur Chatten kann ;). Soweit ich weiß, unterstützt es außerdem Interfaceveränderungen von alleine (Design lässt sich einstellen). Somit scheint es nicht nötig zu sein.

    Gruß
    ~blaze~
    Weißt du, dass es eine Menge Leute gibt, die sich gerne alle Spiele von Steam holen möchten - und das kostenlos? Also zeichnen geht ganz einfach: Hol dir das Handle für den DeviceContext von der Form (API) bzw. finde einfach das Handle der Form heraus und danach kannst du darauf per Graphics zugreifen. (Einfach die statischen Methoden von Graphics anschauen). Naja... Von mir aus willst du nichts illegales machen - es gibt aber eine Menge Andere, die durchaus solche Gedanken hegen könnten. Dabei will dir nicht unterstellen, dass du illegale Dinge vorhaben könntest, aber es gibt sicher auch andere Menschen, die mit dem Wissen was anderes anfangen würden.

    Gruß
    ~blaze~
    Hi,

    hier ist mal nen kleines Beispiel:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private TargetProcessHandle As Integer
    3. Private pfnStartAddr As Integer
    4. Private pszLibFileRemote As String
    5. Private TargetBufferSize As Integer
    6. Public Const PROCESS_VM_READ = &H10
    7. Public Const TH32CS_SNAPPROCESS = &H2
    8. Public Const MEM_COMMIT = 4096
    9. Public Const PAGE_READWRITE = 4
    10. Public Const PROCESS_CREATE_THREAD = (&H2)
    11. Public Const PROCESS_VM_OPERATION = (&H8)
    12. Public Const PROCESS_VM_WRITE = (&H20)
    13. Public Declare Function ReadProcessMemory Lib "kernel32" ( _
    14. ByVal hProcess As Integer, _
    15. ByVal lpBaseAddress As Integer, _
    16. ByVal lpBuffer As String, _
    17. ByVal nSize As Integer, _
    18. ByRef lpNumberOfBytesWritten As Integer) As Integer
    19. Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
    20. ByVal lpLibFileName As String) As Integer
    21. Public Declare Function VirtualAllocEx Lib "kernel32" ( _
    22. ByVal hProcess As Integer, _
    23. ByVal lpAddress As Integer, _
    24. ByVal dwSize As Integer, _
    25. ByVal flAllocationType As Integer, _
    26. ByVal flProtect As Integer) As Integer
    27. Public Declare Function WriteProcessMemory Lib "kernel32" ( _
    28. ByVal hProcess As Integer, _
    29. ByVal lpBaseAddress As Integer, _
    30. ByVal lpBuffer As String, _
    31. ByVal nSize As Integer, _
    32. ByRef lpNumberOfBytesWritten As Integer) As Integer
    33. Public Declare Function GetProcAddress Lib "kernel32" ( _
    34. ByVal hModule As Integer, ByVal lpProcName As String) As Integer
    35. Private Declare Function GetModuleHandle Lib "Kernel32" Alias "GetModuleHandleA" ( _
    36. ByVal lpModuleName As String) As Integer
    37. Public Declare Function CreateRemoteThread Lib "kernel32" ( _
    38. ByVal hProcess As Integer, _
    39. ByVal lpThreadAttributes As Integer, _
    40. ByVal dwStackSize As Integer, _
    41. ByVal lpStartAddress As Integer, _
    42. ByVal lpParameter As Integer, _
    43. ByVal dwCreationFlags As Integer, _
    44. ByRef lpThreadId As Integer) As Integer
    45. Public Declare Function OpenProcess Lib "kernel32" ( _
    46. ByVal dwDesiredAccess As Integer, _
    47. ByVal bInheritHandle As Integer, _
    48. ByVal dwProcessId As Integer) As Integer
    49. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
    50. ByVal lpClassName As String, _
    51. ByVal lpWindowName As String) As Integer
    52. Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" ( _
    53. ByVal hObject As Integer) As Integer
    54. Private Sub Inject()
    55. Timer1.Stop()
    56. Dim TargetProcess As Process() = Process.GetProcessesByName("Prozessname ohne .exe")
    57. TargetProcessHandle = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, TargetProcess(0).Id)
    58. pszLibFileRemote = "Pfad zur .dll"
    59. pfnStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
    60. TargetBufferSize = 1 + Len(pszLibFileRemote)
    61. Dim Rtn As Integer
    62. Dim LoadLibParamAdr As Integer
    63. LoadLibParamAdr = VirtualAllocEx(TargetProcessHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
    64. Rtn = WriteProcessMemory(TargetProcessHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0)
    65. CreateRemoteThread(TargetProcessHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
    66. CloseHandle(TargetProcessHandle)
    67. End Sub
    68. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    69. If IO.File.Exists("Pfad zur .dll") Then
    70. Dim TargetProcess As Process() = Process.GetProcessesByName("Prozessname ohne .exe")
    71. If TargetProcess.Length = 0 Then
    72. Else
    73. Timer1.Stop()
    74. Call Inject()
    75. End If
    76. Else
    77. Timer1.Stop()
    78. MsgBox(".Dll wurde nicht gefunden.")
    79. End If
    80. End Sub
    81. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    82. Timer1.Interval = 50
    83. Timer1.Start()
    84. End Sub
    85. End Class



    Müsste eigentlich Funktionieren. Musst halt nur eine passenden .dll haben ;)


    Grüsse,

    viperkill
    Danke viperkill

    Ich hoffe das die meisten "Noobs" damit nichts illegales anfangen können (Es kommen bestimmt wieder fragen: "Wie muss meine .dll aussehen damit ich ein Aimbot habe?")
    Jetzt so auf dem schnellen Blick ist das meiste vom Code klar, auch die Funktion, ich guck mir das ganze mal morgen "genau" an

    Morgen werd ich mal "Versuche" starten um einen Punkt in der Ecke zu haben



    Mfg.
    SAR