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
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:
[#@$|$@#]
Ejemplo
Código:
[#@$|$@#]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:
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