[SRC] Self CRC32 Check 0.1 (POC)

Iniciado por Elemental Code, 25 Enero 2012, 02:54 AM

0 Miembros y 1 Visitante están viendo este tema.

Elemental Code

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!!!)
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
[#@$|$@#]

Ejemplo
[#@$|$@#]5186AC9D

YO SE QUE ESTO ES MUUUUY RUSTICO, pero ya aclare, es una prueba de concepto y salio bien :D

Descarga Source completo + Binario de CRC32 Correcto + Binario de CRC32 INCORRECTO.

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

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

CAR3S?

mmmmmmm interesante, gran aporte!

BlackZeroX

Pense que habias hecho tu el codigo de CRC32... pero nada que ver usas una clase ajena... mas que nada un POC de crc32 es una tactica trucha para el malware...


' This code is taken from the VB.NET CRC32 algorithm
' provided by Paul (wpsjr1@succeed.net) - Excellent work!


Dulces Lunas!¡.
The Dark Shadow is my passion.

Elemental Code

no se porque o que tiene que ver el malware en esto.
Caso aparte, debi aclarar que el modulo de crc32 no era mio, pero sin embargo la idea y el codigo los pense yo (pese a que no soy ni el primero ni el ultimo.)
No crei que fuera tan malo, ahora cuando tenga tiempo voy a ver si logro armar un metodo de hash por mi cuenta

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

MCKSys Argentina

Cita de: Elemental Code en 25 Enero 2012, 13:54 PM
ahora cuando tenga tiempo voy a ver si logro armar un metodo de hash por mi cuenta

Querés inventar el agujero del mate?  :)

El algoritmo de CRC es bastante conocido y muy estable.

Sino podrias hacer un MD5 del archivo y en vez de un DWORD al final del archivo, le attachas 4 (o bien como string, pero ya serian 16 bytes)

PD: Me gustó el codigo...  :P
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Elemental Code

jaajajaja
Me referia a hacer un codigo propio que haga crc32 para que blackzero no se queje tanto :P

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

STARZ

#6
Muy bueno, gracias

BlackZeroX

#7
Cita de: Elemental Code en 25 Enero 2012, 15:52 PM
Me referia a hacer un codigo propio que haga crc32 para que blackzero no se queje tanto :P

El titulo es engañoso, igual no es nada grave.

Consejo: Carga el EXE en un array de bytes para que evites strconv().

P.D.: Nunca dije que era malo, solo que me ilucionaste.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Maurice_Lupin

 ;D justo lo que buscaba aunque yo también encontre el md5, me pregunto cual es más recomendable para verificar la integridad de mi programa el crc32 o el md5 ?

Saludos.
Un error se comete al equivocarse.

Crawe

Lo he probado pero no me funciona, o lo estoy haciendo mal.
Pongo el module con el [#@$|$@#] , pongo el CLAS que figura en el codigo fuente del proyecto que vos hiciste, es decir copie todo. Lo compilo .exe, después lo abro con notepad++ y pongo  [#@$|$@#]5186AC9D

Lo hago exe de nuevo, entro desde un editor edito alguna letra ponele y se puede seguir abriendo.. No se que estoy haciendo mal.Una ayudita?