[RELEASE] Suspended Injector [OPEN SOURCE]

06/10/2012 23:53 Padmak#1
Hallo Leute,

heute release ich mal wieder was für die Programmierer unter euch:
Ein (zugegeben sehr) kleiner Injector, der den Zielprozess eingefroren startet, injected und danach den Prozess weiterlaufen lässt

Natürlich ergibt sich jetzt auf den ersten Blick nicht unbedingt sofort ein Einsatzszenario dafür.. Aber wer schon jemals versucht hat, einen geschützten Prozess per DLL zu ändern/auszulesen/sonstiges, wird sofort wissen, wofür er dieses kleine Tool nutzen kann.
Hiermit wird jeder LoadLibrary-Hook umgangen, da die DLL lange vor allen anderen geladen wird ;)

Rein theoretisch kann man damit auch in Hackshield-geschützte Prozesse eindringen.. in Ermangelung eines XP-PCs konnte ich das leider bisher noch nicht testen :P

Aber was laber ich eigentlich so viel, hier ist der Code:

Das Teil benötigt kaum Libs, es muss nur gegen die kernel32.lib & die comdlg32.lib gelinkt werden.
Müsste auf allen gängigen C++-Compilern ohne Probleme zu compilen sein, bei Problemen einfach hier rein schreiben

Im Anhang ist das ganze nochmals mit Code & Binary, für die Extra-Faulen :P

Ps: Bevor einer ankommt: Das ganze ginge natürlich noch vieeel ausführlicher, da ich aber Fan von kleinen Tools (am besten <100KB bin) habe ich es so gelassen :D

€: Natürlich vergessen zu sagen:
Der Code ist von mir geschrieben, bei der OpenFileDialog habe ich mir GLAUBE ICH Hilfe in Google geholt, ist aber schon >6 Monate her, drum sei mir bitte ein eventueller Fehlgriff vergeben
Wer den Code benutzt darf mich gerne erwähnen, Reuploads ohne Credits an mich sind natürlich, wie immer, nicht erlaubt.

Padmak
06/10/2012 23:54 Hanashi#2
Very Nice :)

Werde ich auf jeden Fall mal benutzen :D

LG Hanashi
06/11/2012 11:57 Mi4uric3#3
Quote:
Originally Posted by Padmak View Post
Hin Ermangelung eines XP-PCs konnte ich das leider bisher noch nicht testen :P
Lad dir Metin2.UK runter, die haben das neue HS was auch auf Win7 64Bit funktioniert.
06/11/2012 17:39 Padmak#4
:O Rly? Dann muss ich das natürlich sofort machen, danke dir ;)

Padmak
06/12/2012 13:26 Tyrar#5
yep, man kann in HS injecten.. bringt allerdings mit dieser methode recht wenig ;) da (ich geh mal davon aus) HS die geladenen module checked. ob das so korrekt ist kann ich nicht sagen, jedenfalls wurde bei mir die injection nach dem start von HS entdeckt.

ich bin btw. eher ein fan von LdrLoadDll bzw. überhaupt der Nt/Zw API :)
da die meisten leute die ihren client schützen wollen eh nur LoadLibrary funcs hooken, ist das meiner meinung nach effektiver ;)
06/12/2012 17:25 Padmak#6
Grml epvp, hasse doppelt schreiben.

Ähh ja genau:
Auch mit diesem Weg (meinem) kann man Usermode-Hooks ganz gut umgehen, da die erst gesetzt werden, sobald die DLL schon läuft
Aber ich wollte sowieso mal Treiber machen, das find ich interessant :D

Padmak
06/12/2012 17:50 Mi4uric3#7
Erstellt: 06-10-2012, 23:53
Downloads heute, 06-12-2012 17:50: 4

Wo sind die ganzen Leecher hin? oO
06/12/2012 18:27 .SkyneT.#8
Quote:
Originally Posted by Mi4uric3 View Post
Erstellt: 06-10-2012, 23:53
Downloads heute, 06-12-2012 17:50: 4

Wo sind die ganzen Leecher hin? oO
Naja, die sind wohl nicht an dem Injector interessiert.
(Keine GUI, und bis aufs Suspend/Resume Process auch die normale Prozedur :D )
06/12/2012 21:53 Mi4uric3#9
Egal was es ist, alles wird gesogen. Normalerweise. Selbst die Malware
Aber nur im Hacks/Bots Bereich, liegt vielleicht daran..
06/12/2012 23:20 Padmak#10
Hab ich mir auch schon gedacht, war wohl sehr doof das hier zu posten. Naja, lieber haben es 5 Leute die es brauchen, als 50 die nur einfach auf Download klicken^^

Gibt ja kaum Rückmeldung... warum sagt keiner was? :<

Padmak
06/12/2012 23:29 Mi4uric3#11
Quote:
Originally Posted by Padmak View Post
Hab ich mir auch schon gedacht, war wohl sehr doof das hier zu posten. Naja, lieber haben es 5 Leute die es brauchen, als 50 die nur einfach auf Download klicken^^
Eben grade deshalb ists hier eigentlich besser :)

Quote:
Originally Posted by Padmak View Post
Gibt ja kaum Rückmeldung... warum sagt keiner was? :<
Quote:
Originally Posted by Hanashi View Post
Werde ich auf jeden Fall mal benutzen
Naja jetzt sinds 8 Downloads, ich gehöre nicht dazu, da ich mir einen Injector gemacht habe, der perfekt auf mich zugeschnitten ist, da er mir genau die DLLs aus meinen C++ Projekt-Ordnern in eine Combobox oder wie das heißt packt, so muss ich nicht immer die dlls auswählen, ist recht praktisch
Aber funktioniert halt nur bei Embarcadero-Studio-Nutzern, somit nur für ganz wenige nützlich :b

Ich denke schon, dass dein Injector funktioniert, aber ist jetzt nicht so ein Bomben-Feature, dass alle sagen würden "geil" oder so..
06/13/2012 13:37 Padmak#12
Naja, das Bombenzeug kann ich nicht releasen, weil ich mir damit voll den Wind aus drn Segeln nehmen würde^^
wäre denkbar doof von mir

Padmak
06/13/2012 14:05 Mi4uric3#13
Quote:
Originally Posted by Padmak View Post
Naja, das Bombenzeug kann ich nicht releasen
Um was es sich handelt wäre aber schon interessant :b
06/13/2012 22:03 Padmak#14
Naja, so überragend ist's jetzt auch wieder nicht
Meine ganzen Hilfsfunktionen, Codes vom Bot, Codes von verschiedenen anderen Sachen etc.
Seit neuestem auch ein eigenes Archivformat (zumindest teilweise)

Padmak
06/14/2012 18:05 .SkyneT.#15
Quote:
Originally Posted by Padmak View Post
Gibt ja kaum Rückmeldung... warum sagt keiner was? :<

Padmak
Was gibts großartig zu sagen ?

Code:
if(t_hProcess == NULL)
            return false;
Man sollte immer '{' bzw '}' verwenden, weil es die
Lesbarkeit und Fehlerunanfälligkeit (gerade bei Open Source) verbessert.



Code:
if(InjectDllFromDisk(pi.hProcess, pi.dwProcessId, (uintptr_t*)t_dll_path.c_str(), t_dll_path.size()))
            {
                puts("successfully injected!");
                Sleep(100);
                ResumeThread(pi.hThread);
            }
            else
            {
            	puts("error while injecting!");
            }
Startet ResumeThread denn alle Threads ?
(Ich würd die Nt-API verwenden, was mir sogar du mal geraten hast :D )

Weiters wird hier bei einem Fehler in "InjectDllFromDisk" der
Prozess gar nicht mehr "resumed", also bleibt "suspended"...

Eine kleine Sache noch:
Entscheide dich zwischen NULL und 0 ... :)