Antes que nada, esto es POC. Proof Of Concept
Es una mera prueba para ver si es posible. Es medio dificil de implementar en software de terceros o que no esten hechos en vb.
El codigo que lo hace funcionar es basicamente esto:
(REQUIERE UNA CLS APARTE, QUE CALCULA EL CRC32!!!)
Para hacer funcionar esto, tendrias que abrir con algun editor tipo notepad ++ tu ejecutable final y agregarle ahi el crc32 correcto.
Para hacer esto, busca el final del archivo y agregale el SEPARADOR + el CRC32 Correcto.
Separador
Ejemplo
YO SE QUE ESTO ES MUUUUY RUSTICO, pero ya aclare, es una prueba de concepto y salio bien
Intente hacer una version que tuviera una especie de stub para que sirviera para cualquier exe ya compilado pero me trabe, ya que necesitaria hacer un RUN PE del archivo original despues de verificar que el CRC32 fuera correcto y no se nada sobre la estructura PE :S
Es una mera prueba para ver si es posible. Es medio dificil de implementar en software de terceros o que no esten hechos en vb.
El codigo que lo hace funcionar es basicamente esto:
(REQUIERE UNA CLS APARTE, QUE CALCULA EL CRC32!!!)
Código (vb) [Seleccionar]
Option Explicit
'Code by Elemental Code
'Proof of concept
'SELF CRC32 CHECK
'Make sure nobody tampers with your software
'Dedicated, as always, to my Girlfriend <3
'Argentina 24/1/2012
Sub Main()
Dim bArray() As Byte 'Byte Array With the code.
Dim MySelf As String 'My exe file
Dim mymixedcode As String 'all the bin together
Dim MyCode() As String ' The splitted code
Dim lCrC32 As Long 'the CRC32
Dim clsCRC32 As New cCRC32
'Get my own exe file in a way invisible to kaspersky (Fuck you)
MySelf = Chr$(101) & Chr$(120) & Chr$(101) & Chr$(46) & StrReverse(App.EXEName) & Chr$(92) & StrReverse(App.Path)
'Get my Binary code
Open StrReverse(MySelf) For Binary As #1
mymixedcode = Space(LOF(1))
Get #1, , mymixedcode
Close #1
'Split My code
MyCode() = Split(mymixedcode, "[#@$|$@#]")
'0 My file | 1 Right CRC32
'Convert to Byte array
bArray() = StrConv(MyCode(0), vbFromUnicode)
'Get CRC32
lCrC32 = clsCRC32.GetByteArrayCrc32(bArray)
'Compare CRC32
If Hex(lCrC32) = MyCode(1) Then
MsgBox "Success!!" & vbCrLf & "CRC32 Match, You are using the ORIGINAL Software" & vbCrLf & "Press OK to launch the application", vbExclamation, "SELF CRC32 Checker v 0.1"
'Show your Form HERE!!
Else
MsgBox "ERROR: CRC32 MISSMATCH!!" & vbCrLf & "CRC32 Missmatch means this file was edited!!" & vbCrLf & "GET THE ORIGINAL ONE NOW!!", vbCritical, "SELF CRC32 Checker v 0.1"
End If
End Sub
Para hacer funcionar esto, tendrias que abrir con algun editor tipo notepad ++ tu ejecutable final y agregarle ahi el crc32 correcto.
Para hacer esto, busca el final del archivo y agregale el SEPARADOR + el CRC32 Correcto.
Separador
Código [Seleccionar]
[#@$|$@#]
Ejemplo
Código [Seleccionar]
[#@$|$@#]5186AC9D
YO SE QUE ESTO ES MUUUUY RUSTICO, pero ya aclare, es una prueba de concepto y salio bien
Descarga Source completo + Binario de CRC32 Correcto + Binario de CRC32 INCORRECTO.
Código [Seleccionar]
http://www.mediafire.com/?2qb7tnzkt9gu159
Intente hacer una version que tuviera una especie de stub para que sirviera para cualquier exe ya compilado pero me trabe, ya que necesitaria hacer un RUN PE del archivo original despues de verificar que el CRC32 fuera correcto y no se nada sobre la estructura PE :S