Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421

Dll injection/uninjection
Verfasst am: 20.04.2008, 13:08

Zur Verfügung gestellt von Nexos.

Code:
'=============================================================================================================<br />'<br />'                                               Dll Injection / Uninjection By<br />'                                                        British_Intel<br />'<br />'=============================================================================================================<br />Option Explicit<br /><br />Private Type MODULEENTRY32<br />    dwSize As Long<br />    th32ModuleID As Long<br />    th32ProcessID As Long<br />    GlblcntUsage As Long<br />    ProccntUsage As Long<br />    modBaseAddr As Long<br />    modBaseSize As Long<br />    hModule As Long<br />    szModule As String * 256<br />    szExePath As String * 260<br />End Type<br /><br />Private Const TH32CS_SNAPMODULE As Long = &H8<br />Private Const PAGE_READWRITE As Long = &H4<br />Private Const MEM_RELEASE As Long = &H8000<br />Private Const MEM_COMMIT As Long = &H1000<br />Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000<br />Private Const SYNCHRONIZE As Long = &H100000<br />Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)<br />Private Const INFINITE As Long = &HFFFFFF<br /><br />Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long<br />Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long<br />Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As Any, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long<br />Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long<br />Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long<br />Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long<br />Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long<br />Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long<br />Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long<br />Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long<br />Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long<br />Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long<br />Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long<br /><br />Public Function Inject_Dll(Strdll As String, StrProcID As String)<br />Dim LoadlibAdr As Long, RemThread As Long, LngModule As Long, LngProcess As Long, LngBytes As Long, LngThreadID As Long<br />On Error GoTo ErrTrap<br />    LngProcess = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(StrProcID))<br />    LoadlibAdr = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")<br />    LngModule = VirtualAllocEx(LngProcess, 0, Len(Strdll), MEM_COMMIT, PAGE_READWRITE)<br />    WriteProcessMemory LngProcess, ByVal LngModule, ByVal Strdll, Len(Strdll), LngBytes<br />    RemThread = CreateRemoteThread(LngProcess, ByVal 0, 0, ByVal LoadlibAdr, ByVal LngModule, 0, LngThreadID)<br />    WaitForSingleObject RemThread, INFINITE<br />    CloseHandle LngProcess<br />    CloseHandle RemThread<br />    MsgBox "Injected Dll!", vbInformation, "Injection Finished"<br />    Exit Function<br />ErrTrap:<br />    MsgBox "Error Injecting Dll!", vbCritical, "Injection Error"<br />End Function<br /><br />Public Function UnInject_Dll(Strdll As String, StrProcID As String)<br />Dim MODE32 As MODULEENTRY32, LngBaseAddr As Long, RetVal As Long, LngCT32S As Long, LngProcess As Long, FreelibAdr As Long, RemThread As Long<br />On Error GoTo ErrTrap<br />    LngCT32S = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, CLng(StrProcID))<br />    MODE32.dwSize = Len(MODE32)<br />    RetVal = Module32First(LngCT32S, MODE32)<br />    Do While RetVal<br />        If Strdll = Left(MODE32.szExePath, InStr(MODE32.szExePath, Chr(0)) - 1) Then<br />            LngBaseAddr = MODE32.modBaseAddr<br />        End If<br />        RetVal = Module32Next(LngCT32S, MODE32)<br />    Loop<br />    CloseHandle LngCT32S<br />    LngProcess = OpenProcess(PROCESS_ALL_ACCESS, False, CLng(StrProcID))<br />    FreelibAdr = GetProcAddress(GetModuleHandle("Kernel32.dll"), "FreeLibrary")<br />    RemThread = CreateRemoteThread(LngProcess, ByVal 0, 0, ByVal FreelibAdr, ByVal LngBaseAddr, 0, 0)<br />    CloseHandle LngProcess<br />    CloseHandle RemThread<br />    MsgBox "UnInjected Dll!", vbInformation, "UnInjection Finished"<br />    Exit Function<br />ErrTrap:<br />    MsgBox "Error UnInjecting Dll!", vbCritical, "UnInjection Error"<br />End Function


Ich hab den woanders her, weiß also nicht, ob er funktioniert, sollte aber.
 
igoe
Gast





Verfasst am: 07.08.2008, 10:25

Wie genau soll mann die den Anwenden?
 
nicok
Poster
Poster

Anmeldedatum: 15.05.2008
Beiträge: 161


Verfasst am: 07.08.2008, 11:07

Ich frag mich grad wo man ne Dll Injection im legalen Sinne verwenden kann..
 
igoe
Gast





Verfasst am: 07.08.2008, 11:11

Stimmt Wink, es darf ja nichts elligales verwendet werden xD
 
Hamtaro
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.04.2008
Beiträge: 29


Verfasst am: 07.08.2008, 12:29

Nur ein Beispiel: Objectdock verwendet ebenfalls Dll Injection, die meisten Tools die irgendetwas sytemweit überwachen verwenden auf die eine oder andere Art DLL-Injection.
 
BlackDragon
Newbie
Newbie

Anmeldedatum: 03.08.2008
Beiträge: 17


Verfasst am: 07.08.2008, 19:35

ich habe auch ma den source getestet , aber net kapiert =P und was kann man nach der injection machen =O? packete sniffen =P?
 
igoe
Gast





Verfasst am: 08.08.2008, 00:34

Jop, würde ich auch gerne wissen
 
Hamtaro
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.04.2008
Beiträge: 29


Verfasst am: 08.08.2008, 10:46

Ich bin mir nicht sicher ob das wirklich so gemacht wird, aber eine Firewall könnte funktionieren, indem sie sich in jeden Prozess injiziert und die Funktionen, die zum Herstellen einer Verbindung dienen (WSAStartup z.B.) hooken.
 
big earl
Poster
Poster

Anmeldedatum: 01.05.2008
Beiträge: 113


Verfasst am: 08.08.2008, 12:43

ist das nıcht das selbe, als wenn man eıne DLL aus der Memory startet ?
 
nicok
Poster
Poster

Anmeldedatum: 15.05.2008
Beiträge: 161


Verfasst am: 08.08.2008, 12:49

(big earl;6658)
ist das nıcht das selbe, als wenn man eıne DLL aus der Memory startet ?



Soweit ich es verstanden hat benutzt man einen anderen Prozess um entweder diesen zu beeinflussen oder ihn "zum tarnen" zu benutzen.

Soll heißen wenn zb. bei der Firewall der Prozess "firefox.exe" auf der Whitelist steht und man injectet den Prozess und startete aus diesem eine 'bösartige Software' stehen die Chanchen gut das man durch die Firewall durchkommt.

Natürlich muss die Injection unbemerkt bleiben. Glaub einige Firewalls können Injection erkennen.
 
igoe
Gast





Verfasst am: 08.08.2008, 13:15

Weis jetzt einer wie mann den Source benutzt?
 
Hamtaro
Tutorial Leser
Tutorial Leser

Anmeldedatum: 17.04.2008
Beiträge: 29


Verfasst am: 08.08.2008, 14:29

Steht da doch: Du brauchst den Pfad zu einer DLL (einer richtigen, nicht die Active-X-Dlls, die VB6 normalerweise erzeugt) und die ProzessID eines Prozesses, in den die DLL geladen wird.
 
igoe
Gast





Verfasst am: 08.08.2008, 14:38

so einfach o.O?
 
nicok
Poster
Poster

Anmeldedatum: 15.05.2008
Beiträge: 161


Verfasst am: 08.08.2008, 15:05

Hat irgendjemand Tuts oder Lesetipps in Sachen Dll. Dateien in VB6 erstellen?
 
igoe
Gast





Verfasst am: 08.08.2008, 15:07

jop beide tuts sind von mir:
http://www.visual-basic-forum.de/viewtopic.php/sehr_ei...beiten-808.html
http://www.visual-basic-forum.de/viewtopic.php/sehr_ei...teil_2-817.html

MFG
 
jojo4ever
Tutorial Leser
Tutorial Leser

Anmeldedatum: 01.05.2008
Beiträge: 42


Verfasst am: 08.08.2008, 21:45


Steht da doch: Du brauchst den Pfad zu einer DLL (einer richtigen, nicht die Active-X-Dlls, die VB6 normalerweise erzeugt) und die ProzessID eines Prozesses, in den die DLL geladen wird.


[img]/rolleyes.gif[/img]
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: dll injection, function, lpthreadattributes

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2608 06.03.2008, 21:19
Keine neuen Beiträge Dll injection/uninjection 1408 27.09.2007, 08:12
Keine neuen Beiträge ieframe.dll 870 24.06.2007, 09:14
Keine neuen Beiträge Dll Injection in vb6 1249 22.06.2007, 16:55
Keine neuen Beiträge DLL Injection 1085 18.07.2008, 15:58
 


[ Time: 27.4556s ][ Queries: 125 (27.2354s) ][ GZIP on - Debug on ]