Thread Kill/suspend/terminate [VB] ?

09/04/2013 09:13 *-Elsword_Hacker-*#1
Da es ja viele programme giebt wie z.b. den eXtended Task Manager womit man threads einfach "killen" kann, wollte ich fragen ob es auch eine methode giebt dies per visual basic zu machen.

z.b. das das programm ein thread in calc.exe killt.

PS: google ist nicht immer hilfreich ^^.
09/04/2013 10:08 snow#2
NtTerminateThread, NtSuspendThread. Jeweils per Pinvoke nutzen, Prototypen gibts bei Google, die benötigte DLL ist die ntdll.
09/04/2013 14:05 tolio#3
Quote:
Originally Posted by *-Elsword_Hacker-* View Post
PS: google ist nicht immer hilfreich ^^.
lüge

sonst stimmt was snow911 gesagt hat, pinvokes sind das zauberwort
09/04/2013 14:38 dready#4
snow911 hats ja schon beantwortet, zu google ist nicht hilfreich

suspensend process c#

2. Link

:o
09/05/2013 03:56 schneider1424#5
'declarations

Public Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As Integer
Public Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As int32
Public Declare Function TerminateThread Lib "kernel32.dll" (ByVal hThread As IntPtr, ByVal dwExitCode As UInt32) As Boolean
Public Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInteger) As IntPtr
Public Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As IntPtr) As Boolean


Public Enum ThreadAccess As Integer
TERMINATE = &H1
SUSPEND_RESUME = &H2
GET_CONTEXT = &H8
SET_CONTEXT = &H10
SET_INFORMATION = &H20
QUERY_INFORMATION = &H40
SET_THREAD_TOKEN = &H80
IMPERSONATE = &H100
DIRECT_IMPERSONATION = &H200
End Enum


Public Shared Function ResumeProcess(ByVal process2 As String)
Try
Dim process1 As Process = Process.GetProcessById(process2)
For Each pt As ProcessThread In process1.Threads
Dim H As IntPtr
H = OpenThread(ThreadAccess.SUSPEND_RESUME, False, pt.Id)
If h <> IntPtr.Zero Then
ResumeThread(H)
CloseHandle(H)
End If
Next
Catch ex As Exception
End Try
End Function



Public Shared Function SuspendProcess(ByVal process2 As String)
Dim process1 As Process = Process.GetProcessById(process2)
For Each pt As ProcessThread In process1.Threads
Dim h As IntPtr
h = OpenThread(ThreadAccess.SUSPEND_RESUME, False, pt.Id)
If h <> IntPtr.Zero Then
SuspendThread(h)
CloseHandle(h)
End If
Next
End Function


Public Shared Function TerminateThread(ByVal threadid As Long) As Boolean
Dim h As IntPtr = OpenThread(ThreadAccess.TERMINATE, False, threadid)
TerminateThread(h, 0) '0 is the exit code, dont change if you dont know what your doing
CloseHandle(h)
End Function





Your welcome
09/05/2013 14:42 *-Elsword_Hacker-*#6
@schneider1424
dont work ^^.

Quote:
NtTerminateThread, NtSuspendThread. Jeweils per Pinvoke nutzen, Prototypen gibts bei Google, die benötigte DLL ist die ntdll.
dont work ^^.
09/05/2013 14:53 snow#7
Dann liegt der Fehler bei dir und deinem Code. Programm mal als Admin gestartet? GetLastError() aufgerufen? Testweise Debug-Privilegien angefordert?

Mit so wenig Informationen kann man nur raten was bei dir "don't work" ist.

Ach ja, solltest du einen Suspender programmieren: Bitte keinen Thread dafür in der S4-Sektion, da reicht dann der dortige Sammelthread.
09/05/2013 16:26 *-Elsword_Hacker-*#8
das einzige was ich will ist :
die imports
keine zusätzlichen programme oder sonst was!
den quellcode so einfach gehalten wie es nur geht er soll nur ein thread killen in einem prozess und fertig ...

mehr will ich gar nicht ....
09/05/2013 16:31 dready#9
dann zeig doch mal dein Code und sag was du bisher probiert hast, so können wir nur raten
09/05/2013 16:47 *-Elsword_Hacker-*#10
also bei dem code von pinvoke ist das problem , das er anzeigt , das DllImport nicht deklariert ist ....
wenn suspenden sowas ähnliches wie killen ist wäre mir auch ein suspender recht ....
hauptsache die threads sind down ...

und bei dem code von schneider1424 erscheint bei jeden 2. wort ein fehler ...


falls du es genau sehen willst , add mich in skype: grandelbar1958
09/05/2013 16:58 dready#11
Dir fehlt der Import auf die Funktion, hoffe du siehst es nicht als Angriff aber im moment übersteigt das was du machen willst klar dein Wissen.
Grundlagen pauken wäre die richtige Wahl, den auch wenn man dir nun hilft bis es läuft, zweifel ich dennoch an das du auch verstehst was du da gerade tust.

Imports System.Runtime.InteropServices
Wenn mich mein mieses Wissen über VB nu nich im Stich lässt
09/05/2013 21:40 *-Elsword_Hacker-*#12
werds mal austesten ,
naja also die visual basic grundlagen bin ich grad teilweise am lernen
bin bei nem buch bei 1.10 also vllt 3-4% ^^
mir ist die hauptsache das ich dies erstma habe , da ich visual basic nur bestimmte sachen brauche ^^.

PS: du kannst mir aber sogut wie jeden source vorlegen und ich kann ihn dir erklären nur selber coden kann ich ihn nicht xD.


#edit geht nicht
bringt mir bei jeden import was ich mache sogut wie jedes mal nen anderen fehler????

ohne hilfe bei pn oder skype wird das sowieso nichts !
auser ihr schreib hier wirklich das kleinste detail auf was ich machen muss ....
schriftliche anweisungen konnt ich noch nie verarbeiten ....
09/05/2013 23:51 Requi#13
Du sagst, du bekommst Fehler, zeigst uns nicht mal den Code, welcher Fehler es ist oder wo er auftritt.

Kannste auch gleich in eine Autowerkstatt laufen und sagen, dein Auto geht nicht.
09/06/2013 21:58 schneider1424#14
Quote:
Originally Posted by *-Elsword_Hacker-* View Post
@schneider1424
dont work ^^.



dont work ^^.
fixed forgot openthread you need admin rights

if your doing this suspendprocess("gamename.exe") then that wont work
to use this you have to send the process pid which is more accurate
example:

'note use for each to suspend every process with the name "gamename"
'you can change name to the name of the process you want to suspend

dim proc as process() = process.getprocessesbyname("gamename") 'note no .exe
for each ls as process in proc.tolist
suspendprocess(ls.id)
next
09/08/2013 19:02 xxfabbelxx#15
moved