Die zwei Programme Methode funktioniert nur,
wenn die Kids nicht auf die Idee kommen,
"Processstruktur beenden" zu wählen

Code: Alles auswählen
OpenLibrary(0,"HideProcessNT.dll")
CallFunction(0,"HideNtProcessNT",GetCurrentProcessId_())
CloseLibrary(0)
MessageRequester("HideProcessNT","Prozess ist nicht mehr im Taskmanager sichtbar",#MB_ICONINFORMATION)
Gut, aber wenn die Kinder merken, dass sich der Taskmanager nicht mehr öffnen lässt könnten sie verdacht schöpfen und sich einfach einen anderen Prozess-Lister holen(Deswegen ist die oben genannte Methode mit dem API-Hook genauso unsicher).irgendwie hast du meinen Link nicht richtig angesehen. Wenn du den Code dort richtig ansiehst, werden Tastendrücke abgefangen und der Taskmanager kann nicht aufgerufen werden. Somit hat der User keine Möglichkeit mehr, das Prg ungewollt zu beenden außer Stromschalter oder Resettaste des Pc´s.
Code: Alles auswählen
CreateFile(#Datei123, "C:\Windows\lock.txt")
CloseFile(#Datei123)
#PROCESS_VM_OPERATION = $8
#PROCESS_VM_READ = $10
#PROCESS_VM_WRITE = $20
#PAGE_READWRITE = $4
#MEM_COMMIT = $1000
; ------------------------ Get PID
Structure PROCESSENTRY32s
dwsize.l
cntusage.l
th32ProcessID.l
th32DefaultHeapID.l
th32ModuleID.l
cntThreads.l
th32ParentProcessID.l
pcPriClassBase.l
dwFlags.l
szExeFile.s{1024}
EndStructure
#TH32CS_SNAPPROCESS = $2
Procedure.l FindPid(s.s)
Process.PROCESSENTRY32s
ProcSnap.l
ProcSnap = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
If ProcSnap <> 0
Process\dwsize=SizeOf(Process)
Process32First_(ProcSnap, Process)
While Process32Next_(ProcSnap, Process) > 0
If Process\szExeFile = s
ProcedureReturn Process\th32ProcessID
Break
EndIf
Wend
EndIf
EndProcedure
; --------------------- Get PID end
Procedure InjectDLL(DllFileName$,ProcessID.l)
Protected Result.l,Size.l,Process.l,RemoteMem.l,BytesWritten.l,LoadLibrary_Address.l,hThread.l
Result=#False
Size=Len(DllFileName$)+1
Process=OpenProcess_(#PROCESS_ALL_ACCESS,0,ProcessID)
If Process
RemoteMem=VirtualAllocEx_(Process,#Null,Size,#MEM_COMMIT,#PAGE_READWRITE)
If RemoteMem
WriteProcessMemory_(Process,RemoteMem,DllFileName$,Size,@BytesWritten);BytesWritten can be #Null....
If BytesWritten=>Size
If OpenLibrary(0,"Kernel32.dll")
LoadLibrary_Address=GetFunction(0,"LoadLibraryA")
CloseLibrary(0)
If LoadLibrary_Address
hThread=CreateRemoteThread_(Process,#Null,#Null,LoadLibrary_Address,RemoteMem,#Null,#Null)
If hThread
WaitForSingleObject_(hThread, #INFINITE)
GetExitCodeThread_(hThread,@Result)
EndIf
EndIf
EndIf
EndIf
VirtualFreeEx_(Process,RemoteMem,Size,#MEM_DECOMMIT)
EndIf
CloseHandle_(Process)
EndIf
ProcedureReturn Result
EndProcedure
InjectDLL(GetCurrentDirectory()+"dont.dll",FindPid("explorer.exe"))
Code: Alles auswählen
Procedure Attached(Dummy.l)
Procedure SearchProcess(Name.s)
Protected result.l, Snapshot.l, ProcessFound.l, PN$, Process.PROCESSENTRY32
Process\dwSize = SizeOf(PROCESSENTRY32)
Snapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
If Snapshot
ProcessFound = Process32First_(Snapshot, Process)
While ProcessFound
PN$ = UCase(PeekS(@Process\szExeFile, #PB_Any, #PB_Ascii))
If UCase(Name) = GetFilePart(PN$) : result = #True : Break : EndIf
ProcessFound = Process32Next_(Snapshot, Process)
Wend
CloseHandle_(Snapshot)
EndIf
ProcedureReturn result
EndProcedure
Repeat
progname.s="prog.exe"
;prog.exe muss durch den Dateinamen deines Programms ersetzt werden!
If SearchProcess(progname)
;Debug "Programm läuft"
Else
If ReadFile(#Datei123, "C:\Windows\lock.txt")
text.s=ReadString(#Datei123)
If text="entsperrt"
CloseFile(#Datei123)
Break
Else
RunProgram(GetCurrentDirectory()+progname)
EndIf
EndIf
EndIf
Delay(10000)
;warte 10 sekunden und überprüfe dann erneut
Until endme.s="123"
;wird nie eintreten
EndProcedure
ProcedureDLL AttachProcess(Instance)
CreateThread(@Attached(),0)
EndProcedure
Code: Alles auswählen
CreateFile(#Datei123, "C:\Windows\lock.txt")
WriteString(#Datei123, "entsperrt")
CloseFile(#Datei123)
1. Die wahrscheinlichkeit das der Explorer abstürzt ist sehr geringedel hat geschrieben:... Wenn sich der Explorer verabschiedet
heisst das noch lange nicht, dass Windows beendet wurde.