HASH

SILVAHH 25/09/2012 14:43:53
#410461
Oi, eu estou desenvolvendo um aplicativo e gostaria de deixar ele um pouco mais seguro, eu queria fazer com que ele se fechasse caso devido programa fosse aberto, mais como os nomes dos programas podem ser mudados, eu queria que ele vise os programas abertos pelo hash, vou simplificar pra ficar mais fácil de entender!

Por exemplo, eu vou colocar uma lista de Hash MD5 e meu aplicativo vai verificar os programas abertos no PC e ver o hash de cada 1 deles e comparasse eles com os da lista, caso algum fosse igual ele se fecha!

Por favor me ajudem se puderem!
SILVAHH 26/09/2012 00:34:54
#410502
tá ai colega

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=74469&lngWId=1


Muito obrigado mesmo MARCELO-TREZE, eu vou estar olhando o código, mais me parece que é isso ai mesmo, muito obrigado ^ ^
SILVAHH 27/09/2012 11:04:00
#410651
Pessoal, eu estava vendo o que o amigo ai passou, e pela imagem é exatamente o que preciso, só que quando baixei, veio vários arquivos, será que alguém podia me ajudar com tirar de lá a parte do código que preciso?

Se alguém puder me ajudar só preciso que ele veja os processos abertos no PC e veja o Hash MD5 dos processos e compare os hash com uma lista de hash, caso algum hash seja igual algum hash da lista, ele feche meu aplicativo!
ALEVALE 27/09/2012 11:10:15
#410652
Como acho que o seu projeto vai ser separado somente para monitorar se a [Ô]aplicação estiver aberta[Ô] você pode faze-lo em .NET

http://www.codeproject.com/Articles/9560/Get-MD5-and-SHA-1-SHA1-of-any-file
http://www.scottwarren.info/2007/12/26/calculating-an-md5-hash-in-vbnet/

Para prevenir também você ainda pode colocar para que o seu programa seja aberto somente em 1 única instancia.
SILVAHH 27/09/2012 11:32:09
#410655
Como acho que o seu projeto vai ser separado somente para monitorar se a [Ô]aplicação estiver aberta[Ô] você pode faze-lo em .NET

http://www.codeproject.com/Articles/9560/Get-MD5-and-SHA-1-SHA1-of-any-file
http://www.scottwarren.info/2007/12/26/calculating-an-md5-hash-in-vbnet/

Para prevenir também você ainda pode colocar para que o seu programa seja aberto somente em 1 única instancia.


Amigo, ver o hash MD5 eu já sei fazer obrigado, o que eu não consigo é que meu programa veja os hash dos processos abertos no PC.
Por exemplo: Eu verificar o hash MD5 de cada processo aberto no PC, eu consigo, mais isso é manual, o que eu quero é que o meu programa faça isso, porque quando estiver no PC do cara que estiver usando meu aplicativo ele não va fazer e eu é claro não posso, ai preciso que o programa faça isso sozinho amigo ^ ^

Muito Obrigado pela sua resposta no tópico ALEVALE.
MARCELO.TREZE 27/09/2012 11:50:40
#410660
Realmente o projeto está cheio de coisas que o autor colocou para melhorar a aparência do form como progressbar personalizada etc, porém você necessita apenas da parte em que se lista os processos sera isto?
SILVAHH 27/09/2012 13:35:01
#410666
Realmente o projeto está cheio de coisas que o autor colocou para melhorar a aparência do form como progressbar personalizada etc, porém você necessita apenas da parte em que se lista os processos sera isto?

Sim amigo, não precisa listar os processos na tela nem nada, porque esse processo de ver os hash dos processos abertos vai ficar oculto, só preciso que o programa veja os processos que estejam rodando no PC e veja o has de cada 1 deles para comparar com a lista de hash entende? assim se algum processo da lista tiver o hash igual o da lista, o programa da um aviso e se fecha!

Obrigado MARCELO-TREZE pelo comentário que ajudou a simplificar meu problema amigo ^ ^
MARCELO.TREZE 27/09/2012 14:01:46
#410668
bom vamos fiz um exemplo exibindo os processos, veja se é isso que vc deseja porém oculto

SILVAHH 27/09/2012 15:17:23
#410683
Oi, eu tentei ver só essa parte, mais não sei o que estou fazendo de errado que meu VB acusa um erro no List1 [Ô]Error 1 [ô]List1[ô] is not declared. It may be inaccessible due to its protection level.

Mais é claro que ele está declarado, você poderia disponibilizar o seu projeto que fez ai com o arquivo do projeto VB amigo?

Muito obrigado pelas ajudas que estás me dando no meu problema aqui MARCELO-TREZE
MARCELO.TREZE 27/09/2012 15:30:57
#410685
foi o que eu fiz, bom vamos lá

faça o seguinte coloque em um form um listbox e cole


Private Hash As New MD5hash
Private Sub Form_Load()
On Error Resume Next

Dim Process
For Each Process In GetObject([Ô]winmgmts:[Ô]). _
ExecQuery([Ô]select * from Win32_Process[Ô])
List1.AddItem Process.ExecutablePath
Next

End Sub


agora insira um Class Module e mude o nome para MD5hash

e cole

Option Explicit
[ô]
[ô]MD5Hash
[ô]
[ô]Perform CryptoAPI MD5 hash of contents of a named file or a Byte array,
[ô]returning hash as String of 32 hex digits.

[ô]----- Private Consts -----

Private Const ALG_TYPE_ANY As Long = 0
Private Const ALG_CLASS_HASH As Long = 32768
Private Const ALG_SID_MD5 As Long = 3
Private Const CALG_MD5 As Long = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5

Private Const PROV_RSA_FULL As Long = 1
Private Const CRYPT_VERIFYCONTEXT As Long = &HF0000000
Private Const MS_DEFAULT_PROVIDER As String = _
[Ô]Microsoft Base Cryptographic Provider v1.0[Ô]

Private Const HP_HASHVAL As Long = 2
Private Const HP_HASHSIZE As Long = 4

[ô]----- Private Defines -----

Private Declare Function CryptAcquireContext Lib [Ô]advapi32[Ô] Alias [Ô]CryptAcquireContextA[Ô] ( _
ByRef phProv As Long, _
ByVal pszContainer As String, _
ByVal pszProvider As String, _
ByVal dwProvType As Long, _
ByVal dwFlags As Long) As Long [ô]TRUE (<> 0) = success. See Err.LastDLLError if FALSE.

Private Declare Function CryptCreateHash Lib [Ô]advapi32[Ô] ( _
ByVal hProv As Long, _
ByVal algid As Long, _
ByVal hKey As Long, _
ByVal dwFlags As Long, _
ByRef phHash As Long) As Long [ô]TRUE (<> 0) = success. See Err.LastDLLError if FALSE.

Private Declare Function CryptDestroyHash Lib [Ô]advapi32[Ô] ( _
ByVal hHash As Long) As Long [ô]TRUE (<> 0) = success. See Err.LastDLLError if FALSE.

Private Declare Function CryptGetHashParam Lib [Ô]advapi32[Ô] ( _
ByVal hHash As Long, _
ByVal dwParam As Long, _
ByRef pbData As Any, _
ByRef pdwDataLen As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptHashData Lib [Ô]advapi32[Ô] ( _
ByVal hHash As Long, _
ByRef pbData As Any, _
ByVal dwDataLen As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptReleaseContext Lib [Ô]advapi32[Ô] ( _
ByVal hProv As Long, _
ByVal dwFlags As Long) As Long [ô]TRUE (<> 0) = success. See Err.LastDLLError if FALSE.


[txt-color=#007100][ô]----- Private Data -----[/txt-color]

Private m_hHash As Long [ô]Hash object handle.
Private m_hProvider As Long [ô]Cryptographic Service Provider handle.


[txt-color=#007100][ô]----- Private Methods -----[/txt-color]

Private Sub HashBlock(ByRef Block() As Byte)
If CryptHashData(m_hHash, _
Block(LBound(Block)), _
UBound(Block) - LBound(Block) + 1, _
0&) = 0 Then
Err.Raise vbObjectError Or &HC312&, _
[Ô]MD5Hash[Ô], _
[Ô]Failed to hash data block, system error [Ô] _
& CStr(Err.LastDllError)
End If
End Sub


Private Function HashValue() As String
Dim lngDataLen As Long
Dim lngHashSize As Long
Dim bytHashValue() As Byte

lngDataLen = 4 [ô]4 bytes for Long length.
If CryptGetHashParam(m_hHash, HP_HASHSIZE, lngHashSize, lngDataLen, 0&) = 0 Then
Err.Raise vbObjectError Or &HC322&, _
[Ô]MD5Hash[Ô], _
[Ô]Failed to obtain hash value length, system error [Ô] _
& CStr(Err.LastDllError)
Else
lngDataLen = lngHashSize
ReDim bytHashValue(lngDataLen - 1)

If CryptGetHashParam(m_hHash, HP_HASHVAL, bytHashValue(0), lngDataLen, 0&) = 0 Then
Err.Raise vbObjectError Or &HC324&, _
[Ô]MD5Hash[Ô], _
[Ô]Failed to obtain hash value, system error [Ô] _
& CStr(Err.LastDllError)
Else
Dim intByte As Integer

For intByte = 0 To lngDataLen - 1
HashValue = HashValue & Right$([Ô]0[Ô] & Hex$(bytHashValue(intByte)), 2)
Next

CryptDestroyHash m_hHash
End If
End If
End Function


Private Sub NewHash()
If CryptCreateHash(m_hProvider, CALG_MD5, 0&, 0&, m_hHash) = 0 Then
Err.Raise vbObjectError Or &HC332&, _
[Ô]MD5Hash[Ô], _
[Ô]Failed to create CryptoAPI Hash object, system error [Ô] _
& CStr(Err.LastDllError)
End If
End Sub


[txt-color=#007100][ô]----- Public Methods -----[/txt-color]

Public Function HashFile(ByVal FileName As String) As String
Const CHUNK As Long = 16384
Dim intFile As Integer
Dim lngWholeChunks As Long
Dim intRemainder As Integer
Dim lngChunk As Long
Dim bytBlock() As Byte

On Error Resume Next [ô]Does file exist?
GetAttr FileName
If Err.Number = 0 Then
On Error GoTo 0
intFile = FreeFile(0)
Open FileName For Binary Access Read As #intFile
lngWholeChunks = LOF(intFile) \ CHUNK
intRemainder = LOF(intFile) - (CHUNK * lngWholeChunks)
NewHash
ReDim bytBlock(CHUNK - 1)
For lngChunk = 1 To lngWholeChunks
Get #intFile, , bytBlock
HashBlock bytBlock
Next
If intRemainder > 0 Then
ReDim bytBlock(intRemainder - 1)
Get #intFile, , bytBlock
HashBlock bytBlock
End If
Close #intFile
HashFile = HashValue()
Else
Err.Raise vbObjectError Or &HC342&, _
[Ô]MD5Hash.HashFile[Ô], _
[Ô]File doesn[ô]t exist[Ô]
End If
End Function


Public Function HashBytes(ByRef Block() As Byte) As String
NewHash
HashBlock Block
HashBytes = HashValue()
End Function


[ô][txt-color=#007100]----- Class Event Handlers -----[/txt-color]

Private Sub Class_Initialize()
If CryptAcquireContext(m_hProvider, _
vbNullString, _
MS_DEFAULT_PROVIDER, _
PROV_RSA_FULL, _
CRYPT_VERIFYCONTEXT) = 0 Then
Err.Raise vbObjectError Or &HC352&, _
[Ô]MD5Hash.Class_Initialize[Ô], _
[Ô]Failed to obtain access to CryptoAPI, system error [Ô] _
& CStr(Err.LastDllError)
End If
End Sub


Private Sub Class_Terminate()
On Error Resume Next [ô]All exceptions must be processed here.
CryptDestroyHash m_hHash
CryptReleaseContext m_hProvider, 0&
End Sub



Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas