CTRL+ALT+DEL Disable und DLL Injection

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

CTRL+ALT+DEL Disable und DLL Injection

Beitrag von 125 »

Moin,
da ich heute morgen frei hatte und mir langweilig war und ja immer mal wieder die Frage nach CTRL+ALT+DEL abstellen aufkommt hab ich mal eine Lösung geschrieben (DLL Injection in Winlogon und Callbackumleitung vom SAS Window) und dazu noch ein paar einfache DLL Injection funktionen.

Achja ich hab Das nur auf XP getestet wäre nett wenn jemand mit Vista das auch nochmal testen könnte :)

Inspieriert hat mich das hier (teilweise auch im Code geportet eingeflossen): http://www.codeproject.com/win32/Antoni ... print=true
Funktionen
Inject(PID,DLLPath.s) -> DLL Injecten, Wichtig: Kompletten Pfad angeben
Eject(PID,hLibModule) -> DLL Ejecten, hLibModule wird von Inject zurückgegeben
GetPIDFromName(Name.s) -> PID einer Exe ermitteln
DebugPrevileg(Bool) -> #True = Debug Previleg an, benötigt man wenn man z.B. in SYSTEM Anwendungen DLLs injecten will, die Funktion wird von Inject und Eject automatisch benutzt.
Die Funktionen:

Code: Alles auswählen

EnableExplicit  

Procedure GetPIDFromName(Name.s)
Define hSnapshot.l, ProcessInfo.PROCESSENTRY32, Retval.l, PID.l 
  
  hSnapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
  ProcessInfo\dwSize = SizeOf(ProcessInfo) 
  Retval = Process32First_(hSnapshot,@ProcessInfo) 
  
  While Retval 
    If PeekS(@ProcessInfo\szExeFile) = Name
      PID=PeekL(@ProcessInfo\th32ProcessID)
      Break
    Else 
      Retval = Process32Next_(hSnapshot,@ProcessInfo)
    EndIf 
  Wend 
  
ProcedureReturn PID
EndProcedure

Procedure DebugPrevileg(Flag)
Define tk.TOKEN_PRIVILEGES, hToken.l

OpenProcessToken_(GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY | #TOKEN_READ, @hToken)

LookupPrivilegeValue_(0,"SeDebugPrivilege",tk\Privileges\Luid)

tk\PrivilegeCount = 1 
If Flag = #True
tk\Privileges\Attributes = #SE_PRIVILEGE_ENABLED
Else
tk\Privileges\Attributes = 0
EndIf

AdjustTokenPrivileges_(hToken,0,tk,0,0,0) 

EndProcedure

Procedure Inject(PID,DLLPath.s)
	Define	hThread.l, hProcess.l,pLibRemote.l,hLibModule.l

  DebugPrevileg(#True)

	hProcess = OpenProcess_(#PROCESS_ALL_ACCESS, #False, PID)

	pLibRemote = VirtualAllocEx_(hProcess, #Null, 255, #MEM_COMMIT, #PAGE_READWRITE)
	
	WriteProcessMemory_(hProcess, pLibRemote, DLLPath, 255, #Null)
	
	hThread = CreateRemoteThread_(hProcess,#Null,0,GetProcAddress_(GetModuleHandle_("Kernel32"), "LoadLibraryA"),pLibRemote,0,#Null)
	
	WaitForSingleObject_(hThread, #INFINITE)
	GetExitCodeThread_(hThread, @hLibModule)
	CloseHandle_(hThread)
	CloseHandle_(hProcess)

	VirtualFreeEx_(hProcess, pLibRemote, SizeOf(DLLPath), #MEM_RELEASE)

  DebugPrevileg(#False)
  
  ProcedureReturn hLibModule
EndProcedure

Procedure Eject(PID,hLibModule.l)
	Define	hThread.l, hProcess.l

  DebugPrevileg(#True)

	hProcess = OpenProcess_(#PROCESS_ALL_ACCESS, #False, PID)
	
	hThread = CreateRemoteThread_(hProcess,#Null,0,GetProcAddress_(GetModuleHandle_("Kernel32"), "FreeLibrary"),hLibModule,0,#Null)
	
	WaitForSingleObject_(hThread, #INFINITE)
	CloseHandle_(hThread)
	CloseHandle_(hProcess)

  DebugPrevileg(#False)
EndProcedure
Eine DLL die man benutzen kann um StrgAltEntf auszuschalten (Einfach in winlogon.exe injecten):

Code: Alles auswählen

Global hSASWnd.l,OldSASProc.l

ProcedureDLL MakeLong(low,high) 
  ProcedureReturn low + (high << 16) 
EndProcedure

ProcedureDLL SASWindowProc(hWnd,uMsg,wParam,lParam)
If uMsg = #WM_HOTKEY
		If lParam = MakeLong(#MOD_CONTROL | #MOD_ALT, #VK_DELETE)
			ProcedureReturn 1
		EndIf
EndIf

	ProcedureReturn CallWindowProc_(OldSASProc, hWnd, uMsg, wParam, lParam)
EndProcedure

ProcedureDLL AttachProcess(hInstance)
		 hSASWnd = FindWindow_("SAS Window class","SAS window")
 		 OldSASProc = SetWindowLong_(hSASWnd, #GWL_WNDPROC, @SASWindowProc())
EndProcedure

ProcedureDLL DetachProcess(hInstance)
     SetWindowLong_(hSASWnd, #GWL_WNDPROC, OldSASProc)
EndProcedure
Beispielanwendung mit der DLL:

Code: Alles auswählen

Define hLibModule.l,PID.l

PID=GetPidFromName("winlogon.exe")
hLibModule=Inject(PID,"<Voller Pfad zur DLL>")

Delay(10000)

Eject(PID,hLibModule)
mfg
125
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1577
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

:o Wow! Nice one :allright: . Aber sei vorsichtig, dass keine ANfänger hier Tünnef damit veranstalten...!

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Auch wenn der Code sinnvoll und einen guten Zweck dienen könnte, halte
ich solche Sourcen nicht für angebracht in einem öffentlichen Forum.

Ist zwar nichts strafbares ansich, kann aber fast nur für sowas eingesetzt
werden, da ein jeder Windows-User sich drauf verlassen können sollte, das
diese Tastenkombination funktioniert. Aber das soll lieber ein anderes Mod
oder Admin entscheiden.

Nice finde ich es schon garnicht :freak:
ASSARBAD hat geschrieben:Um ehrlich zu sein sehe ich aber kaum Gründe für normale Programmierer, eine so integrale und
für jedermann wichtige Tastenkombination zu unterdrücken. Warum wichtig? Nun, sie ist dazu da
um globale Hooks zu umgehen, sollten diese beispielsweise das System zum Hängen bringen oder
Tastatur und Maus ansonsten unterdrücken. Außerdem startet man unter NT so den Taskmanager,
sperrt die Workstation und ändert das Passwort.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Gibt eine menge Gründe für solche Codes z.B. sollen in unserer Schule die Schüler nich am Taskmanager rumspielen...

Weis jetzt nicht was an diesem Code schlimm ist zum Massmailing und Weiterverbreiten ist er eh untauglich, da es die castrierte Version ist.
Denn dafür hätte man keine DLL Injection sondern eine Code Injection gemacht damit man keinen Dateiballast hat.....

Außerdem wüsste ich nicht wie man solchen Code böswillig einsetzen sollte.... Wenn man jetzt so ein Programm mit BlockInput austatten sollte wäre der User zwar aus dem System ausgesperrt aber ein druck auf den Resetschalter behebt das doch...
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> aber ein druck auf den Resetschalter behebt das doch...
Ungespeicherte Dateien weg, jetzt überleg Dir mal was so eine
Chefsekretärin kostet die Minuten, wenn die Briefe weg sind. Ihr
Stundenlohn, Arbeitgeberanteil Versicherung, Steuer usw.

Reset kann auch das Dateisystem beschädigen, ist zwar unwahrscheinlich,
aber selten kommt oft
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

(Fast) Jeder Code hat hier, gerade in einem öffentlichen Forum seine Daseinsberechtigung. Natürlich bin ich auch gegen Codes, die provokativ Dateien etc. löschen, aber Codes wie diesen hier finde ich in Ordnung.

Und ich wüsste auch nicht, wieso gerade eine Sekretärin ein Programm laufen lassen sollte, das ihr die STRG+ALT+ENTF Kombination unterdrückt /:->
Und wenn, dass ist sie/ihr Chef selbst schuld.


Jeder Programmierer sollte einfach selbst darauf achten, was er seinen Benutzern zumutet. Selbst wenn er eine derartige Funktion einbaut, bist du gezwungen, das Programm zu benutzen? Tust ja so, als steht schon jetzt fest, dass du das Programm nach seiner Fertigstellung dauerhaft benutzen musst. :lol:

Ich persönlich finde den Code interessant, habe momentan aber leider keine Verwendung dafür.

Die Meinung, es gebe keine Gründe für normale Programmierer, eine so integrale und für jedermann wichtige tastenkombination zu uterdrücken, teile ich nicht. Im Gegenteil, es gibt ausreichend Gründe, dass man derartige Funktionen benutzt; wie schon gesagt, wenn man Sicherheitssoftware erstellt für Computer in öffentlichen Einrichtungen, etc.. Klar braucht man diese Tastenkombi, um den Taskamanger aufzurufen, aber normale Anwender können alternativ Strg+SHift+Escape drücken oder per Rechtsklick auf die taskleiste den Taskmanager starten. Deshalb verstehe ich nicht, dass der Text sagt, man komme ohne Strg+Alt+Entf nicht mehr an den Taskmanager heran.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Jeder Programmierer sollte einfach selbst darauf achten, was er seinen Benutzern zumutet
Was meinste wieviele Script-Kiddies hier ihre Infos holen um Ihre Viren/Spy
und sonstwas zu programmieren. Sowas kommt ja meist nicht von
intelliegenten Menschen, die kommen nur durch solche Threads zu ihren
Code.

Solange hier laufend solche Tipps vergeben werden, halte ich mich aus allen
Tests und Feedbacks raus, hab schon meine Erfahrungen gemacht, wo die
Exe einfach was nach System32 entpackt hat.

Ich wüßte nicht wofür Lehrer sowas benötigen sollten, in Firmen und Schulen
sollte doch sowieso nur die Anmeldung per Str-Alt-Del möglich sein, alles
andere wäre ja leichtsinnig. Also sind doch dort diese Tastenkombinationen
wichtig.

Es geht ja auch nicht um die aktiven Forenmitglieder, ich meine eher die
anderen Leser, die in Google Str-Alt-Enf eingeben und dann auf dieses
Forum stossen.

Dabei spielt es keine Rolle ob diese hinterher entsetzt sind oder anfangen
ihren Wurm zu basteln.

>> Ich persönlich finde den Code interessant, habe momentan aber leider keine Verwendung dafür.
Deswegen ist es auch kein Tipp der es Wert wäre erwähnt zu werden,
sowas kann man sich privat austauschen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Was meinste wieviele Script-Kiddies hier ihre Infos holen um Ihre Viren/Spy und sonstwas zu programmieren
Ach und daran ist jetzt 125 schuld? Nun gut... :roll:
Außerdem: Ob solche Kids jetzt mit oder ohne fremde Hilfe sich nen Virus zusammenbauen, das ist im Endeffekt doch egal. Natürlich sollte man keine Viren posten, aber solange wir noch keinen Bundestrojaner haben, kann man das schlecht überwachen :lol:

> Solange hier laufend solche Tipps vergeben werden, halte ich mich aus allen Tests und Feedbacks raus, hab schon meine Erfahrungen gemacht, wo die Exe einfach was nach System32 entpackt hat.
Das verstehe ich. Ich kann gut nachvollziehen, dass du aufgrund dieser schlechten Erfahrung abgeneigt bist, solche Codes zu benutzen.
ABER: Ein Blick in den Code vorher schadet auch dir nicht. :mrgreen:
Ich selbst schaue auch einen Code vorher zumindeest grob durch und wenn dann noch etwas (schlimmes) passiert, dann bin ich eben selber schuld. Deshalb muss ich mich aber nicht im Forum darüber beklagen.

> Ich wüßte nicht wofür Lehrer sowas benötigen sollten, in Firmen und Schulen sollte doch sowieso nur die Anmeldung per Str-Alt-Del möglich sein
Ist es auch, denn bei der Anmeldung laufen noch keine Prozesse (außer vielleicht Dienste). In der Hilfe zum ANmeldedialog unter Windows 2000 steht doch extra, dass man Strg+Alt+Entf drücken muss, damit kein anderes Programm diese Tastenkombination abfangen kann.
Und was die Schule ihren Schülern an ihren PCs (in der Schule) erlaubt oder verbietet, das ist die Sache der Schule. Wenn die Schule sagt: "Nein, wir wollen nicht, dass der Schüler den Taskmanager aufruft, um unsere Überwachungsprogramme zu killen", dann ist es eben so.

> Es geht ja auch nicht um die aktiven Forenmitglieder, ich meine eher die anderen Leser, die in Google Str-Alt-Enf eingeben und dann auf dieses
Forum stossen
OK, dann schlage ich vor, 125 löscht seinen Thread und schickt ihn als PN an ale Forumsteilnehmer, damit alle das mitkriegen, aber Google diese Seite nicht indizieren kann...
Mal erhlich: Ich kenne mich in dieser (ich nenn's mal) "Hackerszene" nicht aus, aber die geben bei Google bestimmt andere Sachen ein und werden in dunkleren Foren fündig. Kann ich mir jedenfalls gut vorstellen.

> Deswegen ist es auch kein Tipp der es Wert wäre erwähnt zu werden, sowas kann man sich privat austauschen
Musst du grad sagen, deine Postings enthalten auch nur Genörgel. :wink:
Du kannst ja meinetwegen den Thread sufspalten, aber wenn dann bitte in die Laberecke, weil es doch eine ordentliche Diskussion und kein Flame ist.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Im engl. Forum war vor ein paar Monaten eine Frage nach so einer Funktion,
dort wurde im begründet nicht geantwortet, hier soll es als Tipp durchgehen :freak:
, wie gesagt die Meinungen gehen auseinander, deshalb lösche ich
nicht, sondern empfehle es nur, wenn keiner meiner Kollegen gleicher
Meinung ist, bleibts (so siehts wohl aus, sonst wäre es schon weg), ansonsten
kommts weg (nicht in die Laberecke, noch nichtmal in den Mülleimer)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Tja, kannst mal sehen. Aber wenn ihm begründet nicht geantwortet wurde, könnte ich genausogut sagen: "Was? Ihr behaltet die Informationen zum programmieren eines Virus' für euch? Schande, eure Software teste ich nicht mehr!"

Ich finde es schade, dass jedem sofort Unterstellt wird, ein Trojaner oder soetwas zu programmieren, bloß weil jemand fragt, wie man was wo im System umstellen kann.

Was würdest du denn jetzt sagen, wenn ich fragen würde, wie ich ein eigenes Symbol in die Systemeinstellungen kriege? Abstempeln oder Abhilfe schaffen?

Mir ist schon öfter aufgefallen, dass gerade du, TS'si, bei "kritischen" Codes immer sofort postest "Hallo erstmal... Ich finds ja nich so gut, dass solche Codes publiziert werden..."
Nimm es mir um Gottes willen bitte nicht übel, aber dann lass solche Beiträge doch bitte sein. Ich weiß, mittlerweile habe ich hier auch einige Beiträge reingeschrieben, die nicht direkt zum Thema gehören, aber in erster Linie hat 125 den Thread für Feedback zu seiner DLL eröffnet und nicht als Meckerkasten, dass solche Codes schon an der Schwelle zum Bösen stehen.

> ansonsten kommts weg (nicht in die Laberecke, noch nichtmal in den Mülleimer)
Ich habe zwar (noch?) keine Verwendung für diesen Code, aber er beeindruckt mich trotzdem, denn um soetwas pposten zu können muss man schon eine Menge Ahnung haben. 125 hat bestimmt viel Arbeit investiert und ich an seiner Stelle würde aus der Haut fahren, würde dann auch noch der Thread gelöscht, weil die Leute Angst vor ein bisschen Buchstabencode auf einer phpBB-Webseite haben.
Dieser Thread beantwortet im Grunde doch nur die dutzenden Fragen von wegen "Wie deaktiviere ich Strg+Alt+Entf?". Und mir kann auch keiner erzählen, dass jeder, der diese Frage gestellt hat, negative Absichten hat, sodass die Löschung dieses Threads aus diesem Grund gerechtfertigt wäre.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten