|
| Autor |
Nachricht |
ZiG Ü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

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 , es darf ja nichts elligales verwendet werden xD |
|
| |
|
 |
Hamtaro 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

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

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

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

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

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

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
|
|
| |
|
 |
jojo4ever 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] |
|