Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

[VB] Dll Injection Probleme

- - - - -

  • Bitte melde dich an um zu Antworten
12 Antworten in diesem Thema

#1
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Hallo Leute,
ich habe mich gestern mal rangesetzt und ein Dll Injektion Modul programmiert, da meine alten nicht mehr funktionieren.
Ich entwickle das ganze unter Windows 7 x64 und compile es als x86 statt 'Any CPU', da es sonst bei 32 bit Prozessen die 64 bit 'LoadLibraryA' Addresse laden würde. Unter Windows 7 x64 funktioniert es auch, sofern ich in einen 32 bit Prozess injecte.
Unter 32 bit (Windows X & 7)funktioniert der Inject0r aber nicht! Die Dll die ich injekte ist 100% 32 bit. Wie kann ich das regeln, dass es möglichst mit jeder OS-Bitversion und jeder Prozess-Bitversion funktioniert?

Hier der Code meiner 'Injection' class:

Public Class Injection

    ' Injection.vb class
    ' (C) 2013 hackiosa akaAnne Frank
    ' Do not copy without permission

    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 VirtualProtectEx Lib "kernel32" (ByVal hProcess As Integer, ByVal lpAddress As Integer, ByVal dwSize As Integer, ByVal flNewProtect As Integer, ByVal lpflOldProtect As IntPtr) As Boolean
    Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, ByVal dwSize As IntPtr, ByVal flAllocationType As Integer, ByVal flProtect As Integer) As IntPtr
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId 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
    Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal ProcessHandle As Integer, ByVal lpThreadAttributes As Integer, ByVal dwStackSize As Integer, ByVal lpStartAddress As Integer, ByVal lpParameter As Integer, ByVal dwCreationFlags As Integer, ByVal lpThreadID As Integer) As Integer

    Private Const MEM_COMMIT = &H1000
    Private Const MEM_RESERVE = &H2000
    Private Const PAGE_READWRITE = &H4

    Private Shared Function GetProcessHandle(ByVal name As String) As IntPtr
        Dim handle As IntPtr
        name = Replace(name, ".exe", "")
        For Each p As Process In Process.GetProcessesByName(name)
            handle = OpenProcess(2035711, 0, p.Id)
        Next
        Return handle
    End Function

    Public Shared Sub InjectDLL(ByVal process As String, ByVal dll As String)
        Dim dwTid As Integer
        Dim dwLoadLibraryA As Int32 = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")
        Dim dwHandle As Integer = GetProcessHandle(process)
        Dim dwFreeSpace As Integer = VirtualAllocEx(dwHandle, 0, Len(dll) + 1, MEM_COMMIT + MEM_RESERVE, PAGE_READWRITE)

        ' write dll path to free space
        For i = 0 To Len(dll) - 1
            WriteProcessMemory(dwHandle, dwFreeSpace + i, Asc(Mid(dll, i + 1, 1)), 1, vbNull)
        Next

        ' create thread to LoadLibraryA
        CreateRemoteThread(dwHandle, 0, 0, dwLoadLibraryA, dwFreeSpace, 0, dwTid)

    End Sub

End Class

Vielen Dank im vorraus

Bearbeitet von 0xC3, 05 May 2013 - 12:36 Uhr.


#2
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
Hab das Ding bei mir unter "AnyCPU" laufen (ist ein mobiler Compiler, kann es nicht ändern) und scheinbar wird irgendwas injectet (Win7, x64). Obwohl der Zielprozess nichts macht, wächst er rasant an, wenn ich einer Endlosschleife die DLL reinballere.
Meine (managed) DLL landet in einem Prozess der auch Managed ist.

Hier mal die DLL:
Public Class Class1
    Public Const DLL_PROCESS_DETACH = 0
    Public Const DLL_PROCESS_ATTACH = 1
    Public Const DLL_THREAD_ATTACH = 2
    Public Const DLL_THREAD_DETACH = 3
    Public Function DllMain(ByVal hInst As Long, ByVal fdwReason As Long, ByVal lpvReserved As Long) As Boolean

	    Select Case fdwReason
		    Case DLL_PROCESS_DETACH
			    MsgBox("Test1")
			    ' No per-process cleanup needed
		    Case DLL_PROCESS_ATTACH
			    DllMain = True
			    MsgBox("Test2")
		    Case DLL_THREAD_ATTACH
			    ' No per-thread initialization needed
		    Case DLL_THREAD_DETACH
			    MsgBox("Test3")
			    ' No per-thread cleanup needed
		    Case Else
			    MsgBox("Error")
	    End Select
    End Function
End Class

Das irgendwas ausgeführt wird, kann nicht behaupten.
Auch wenn die DLL ne Shared Main() Methode hat, passiert nichts. (Hab damit auch keine Erfahrung)

Wenn du extra auf x86 für 32Bit stellst, damit es dort geht, aber es trotzdem nicht geht, dann würde ich mal auf AnyCPU umstellen.


Mfg.
SAR

Eingefügtes Bild


#3
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Hmm nein ich habe auf 32Bit gestellt, damit es in 32Bit Prozesse injecten kann, d.h. dass es unter x64 nicht gefahr läuft als x64 ausgeführt zu werden,
damit würde es nämlich gewisse Probleme mit GetProcAddress/GetModuleHandle geben, diese würden dann nämlich die 64Bit Varianten sein.

LgAnne Frank

#4
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
Wenn ein 32Bit-Prozessor drin ist, aber man Win x64 laufen hat, werden die Prozesse doch eh auf 32Bit simuliert?
Edit: Zumindest ab Win7.


Mfg.
SAR

Bearbeitet von SAR, 05 May 2013 - 13:39 Uhr.

Eingefügtes Bild


#5
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Nein -.-
Ich habe Windows 7 64Bit auf einem 64Bit-Prozessor laufen, es gibt ja aber trotzdem Programme die auf 32Bit laufen, um kompatibel zu sein.
Dazu zählen oft auch Spiele.

#6
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
Achso, das meinst du.

Ich hab einen Quellcode von einer Function aus dem OldSchoolHack-Injector. Dort funktioniert alles.
Ich poste ihn hier schonmal und werde ich ihn gleich auseinanderbasteln.

Edit: Code eingefügt.
Edit²: If-Verschachtelung rausgenommen, Eigenen Sub gebaut.

Private Sub Inject(ByVal targetProcessName As String, ByVal targetDllPath As String) As Boolean


    Dim processesByName As Process = Process.GetProcessesByName(targetProcessName)(0)
    Dim hProcess As IntPtr = Win32.OpenProcess(&H1F0FFF, False, processesByName.Id)


    Dim lpBaseAddress As IntPtr = Win32.VirtualAllocEx(hProcess, IntPtr.Zero, (targetDllPath.Length + 1), AllocationType.Commit, MemoryProtection.ExecuteReadWrite)

    Dim ptr3 As IntPtr

    If Win32.WriteProcessMemory(hProcess, lpBaseAddress, Encoding.ASCII.GetBytes(targetDllPath), (targetDllPath + 1), ptr3) Then
        Dim procAddress As IntPtr = Win32.GetProcAddress(Win32.GetModuleHandle(New XorStr(12, &H37, New UInt32() { &H5CD347DA, &H56DE0282, &H1CA41C0 }).ToString) _ 
                                                         , New XorStr(12, &H90, New UInt32() { &HDC60EF69, &HC062E87B, &HE975FF44 }).ToString)

        Dim hHandle As IntPtr = Win32.CreateRemoteThread(hProcess, IntPtr.Zero, 0, procAddress, lpBaseAddress, 0, IntPtr.Zero)

        Win32.WaitForSingleObject(hHandle, UInt32.MaxValue)

    End If

     Win32.VirtualFreeEx(hProcess, lpBaseAddress, 0, FreeType.Release)
     Win32.CloseHandle(hProcess)


End Sub





Mfg.
SAR

Bearbeitet von SAR, 05 May 2013 - 17:45 Uhr.

Eingefügtes Bild


#7
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Aha, danke. Also der hat sowohl unter 32Bit als auch unter 64Bit funktioniert?
Also mir fällt jetzt ganz konkret krass die Zeile mit 'procAddress' aus, werds mir nachher mal anschauen,
arbeite grad noch an etwas anderem

Greetz

#8
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
Auf meinem x64 System wird ein Spiel als 32Bit simuliert und da bekommt er die DLL rein.
Bin grade dabei die ganzen Klassen auseinander zu pflügen (mit seinem Exclusive OR und son Blödsinn).

Poste gleich ein Modul wo das alles klappt.


Mfg.
SAR

Eingefügtes Bild


#9
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Ja soweit funktioniert es bei mir ja auch :D

#10
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
?
Was willst du dann noch? :D

Genau das schafft der Code: Auf meinem Rechner läuft x64 und ich habe einen 64Bit-Prozessor, jedoch läuft die Anwendung auf 32Bit. Dein Code schafft den Inject dort nicht, aber das Teil von OldSchoolHacks.

Please Login HERE or Register HERE to see this link!


Soweit habe ich es auseinander gebrochen. Aber bekomm beim besten Willen nicht Zeile 24 und 34 lauffähig. Alle Decompiler schmei??en denselben Müll raus.



Mfg.
SAR

Eingefügtes Bild


#11
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Ich hab ja gesagt, dass ich den mir mal anschauen werde ^^.png' class='bbc_emoticon' alt='^^' />
Wie gesagt eben wegen dem 32Bit Fail meines Injectors ^^.png' class='bbc_emoticon' alt='^^' />

LgAnne Frank

#12
SAR

SAR

    Regelmäßiger Übertreiber

  • Premium Member
  • Likes
    319
  • 394 Beiträge
  • 286 Bedankt
  • 608463167
  • verifiziert
Und? Problem gelöst? :P


Mfg.
SAR

Eingefügtes Bild


#13
Anne Frank

Anne Frank

    Hacktivist

  • Banned
  • PIPPIPPIPPIPPIP
  • Likes
    52
  • 62 Beiträge
  • 26 Bedankt
Hab noch nicht weiter gemacht, hab ja auch noch andere Projekte & RL :P

Greetz



  Thema Forum Themenstarter Statistik Letzter Beitrag

Besucher die dieses Thema lesen:

Mitglieder: , Gäste: , unsichtbare Mitglieder:


This topic has been visited by 11 user(s)


    Blackfox, Born2Hack, burhanalasssad, GenDrive, kiwitone, mr.blue, n1nja, nischke, Onek, Razorback88, Sharky
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.