Hey ho, habe gestern über hooks und code injection in .net nachgedacht, ist ja leider alles beschränkt. Habe mir heute mit olly dann ma den taskmanager auf xp angeschaut und habe nen kleinen patch geschrieben, welcher die TerminateProcess Funktion NOPt. Darauf hin lässt sich kein prozess mehr beenden, ist ja logisch.
Glaube, dass das ganze nur auf XP funktioniert (mit diesen Adressen). Wäre n1, wenns jemand auf Win7 und Vista testen könnte.
Aufruf ganz einfach:Code:Public Class TaskManager Dim TerminateProcess_on_Value() As Byte = {&HFF, &H15, &HC0, &H10, &H0, &H1} Dim TerminateProcessAdress() As Integer = {&H100C226, &H100C227, &H100C228, &H100C229, &H100C22A, &H100C22B} Dim NopValue As Byte = &H90 Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer 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 CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer Public Function TurnTerminateProcessOFF() As Boolean Try For Each p As Process In Process.GetProcessesByName("taskmgr") Dim pHandle As IntPtr = OpenProcess(&H1F0FFF, 0, p.Id) For i As Integer = 0 To 5 WriteProcessMemory(pHandle, TerminateProcessAdress(i), NopValue, 1, Nothing) Next Next Return True Catch ex As Exception Return False End Try End Function Public Function TurnTerminateProcessON() As Boolean Try For Each p As Process In Process.GetProcessesByName("taskmgr") Dim pHandle As IntPtr = OpenProcess(&H1F0FFF, 0, p.Id) For i As Integer = 0 To 5 WriteProcessMemory(pHandle, TerminateProcessAdress(i), TerminateProcess_on_Value(i), 1, Nothing) Next Next Return True Catch ex As Exception Return False End Try End Function End Class
schöner wäre es natürlich, wenn man noch rausfiltern würde, ob es sich bei dem Prozess um den eigenen handelt und nur dann die funktion aushebeln würde.Code:Dim t As New TaskManager 'funktion überschreiben t.TurnTerminateProcessOff() 'funktion zurücksetzen t.TurnTerminateProcessON()
mfg Krusty

Zitieren
