Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Elemental Code en 25 Enero 2012, 02:54 am



Título: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 25 Enero 2012, 02:54 am
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
  1. Option Explicit
  2.  
  3. 'Code by Elemental Code
  4. 'Proof of concept
  5. 'SELF CRC32 CHECK
  6. 'Make sure nobody tampers with your software
  7. 'Dedicated, as always, to my Girlfriend <3
  8. 'Argentina 24/1/2012
  9.  
  10. Sub Main()
  11.    Dim bArray() As Byte 'Byte Array With the code.
  12.    Dim MySelf As String 'My exe file
  13.    Dim mymixedcode As String 'all the bin together
  14.    Dim MyCode() As String ' The splitted code
  15.    Dim lCrC32 As Long 'the CRC32
  16.    Dim clsCRC32 As New cCRC32
  17.  
  18.    'Get my own exe file in a way invisible to kaspersky (Fuck you)
  19.    MySelf = Chr$(101) & Chr$(120) & Chr$(101) & Chr$(46) & StrReverse(App.EXEName) & Chr$(92) & StrReverse(App.Path)
  20.  
  21.    'Get my Binary code
  22.    Open StrReverse(MySelf) For Binary As #1
  23.    mymixedcode = Space(LOF(1))
  24.    Get #1, , mymixedcode
  25.    Close #1
  26.  
  27.    'Split My code
  28.    MyCode() = Split(mymixedcode, "[#@$|$@#]")
  29.    '0 My file | 1 Right CRC32
  30.  
  31.    'Convert to Byte array
  32.    bArray() = StrConv(MyCode(0), vbFromUnicode)
  33.  
  34.    'Get CRC32
  35.    lCrC32 = clsCRC32.GetByteArrayCrc32(bArray)
  36.  
  37.    'Compare CRC32
  38.    If Hex(lCrC32) = MyCode(1) Then
  39.        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"
  40.        'Show your Form HERE!!
  41.    Else
  42.        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"
  43.    End If
  44. 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 :D

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


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: CAR3S? en 25 Enero 2012, 07:52 am
mmmmmmm interesante, gran aporte!


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: BlackZeroX en 25 Enero 2012, 08:27 am
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...

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

Dulces Lunas!¡.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 25 Enero 2012, 13:54 pm
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


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: MCKSys Argentina en 25 Enero 2012, 15:26 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


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 25 Enero 2012, 15:52 pm
jaajajaja
Me referia a hacer un codigo propio que haga crc32 para que blackzero no se queje tanto :P


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: STARZ en 25 Enero 2012, 18:27 pm
Muy bueno, gracias


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: BlackZeroX en 25 Enero 2012, 22:11 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!¡.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Maurice_Lupin en 26 Enero 2012, 02:58 am
 ;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.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Crawe en 26 Enero 2012, 03:12 am
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?


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: m0rf en 26 Enero 2012, 07:24 am
;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.

Por lo que tengo entendido md5 esta bastante por encima que crc32.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: MCKSys Argentina en 26 Enero 2012, 20:51 pm
Lo compilo .exe, después lo abro con notepad++ y pongo  [#@$|$@#]5186AC9D

Abres un EXE con el notepad ??????  :huh:

Creo que deberias usar un editor hexa...  :P

Saludos!


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 26 Enero 2012, 21:39 pm
huu que hay que responder mucho  :rolleyes:

@MCKsys
Notepad++ puede hacer eso.

@m0rph
Md5 es un hash mas largo, use crc32 porque es mas corito y usado y porque me gusta mas  :xD

@Crawe
Fijate que este bien el CRC32 que estas pegando al final de tu archivo, tiene que ser el de tu exe no el del mio :P  :¬¬

@BlackZeroX
Lo tenia pensado asi, pero no se como hacer un split desde un array de datos :S


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Crawe en 26 Enero 2012, 22:25 pm
Claro elemental code.. yo en el modulo pongo la "Contraseña" vendria a ser [#@$|$@#] esto lo agrego al final del notepad++ al abrir el exe.. y luego reviso con el editor hexa y aparece el [#@$|$@#] todo bien. pero cuando lo modifico despues con el hexa sigue abriendo normalmente.Queres hablar mejor por msn? para no tener que postear tanto? k0bra@crosshack.com.ar  gracias:p


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 26 Enero 2012, 23:06 pm
a ver nene, segui los pasitos.
Compila tu ejecutable final con el codigo que puse ahi. (acomodalo para que haga lo que queres ¬¬) (ah y hacelo arrancar desde el sub main :P)
Conseguite un programa como el HashTab y consegui el crc32 de tu ejecutable.
abri el exe con  el notepad++ y SIN TOCAR NADA MAS agrega el separador y el crc32 del paso anterior
Guardalo y deberia abrirse bien.
Ahora modifica algo y fijate que no se abre


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: BlackZeroX en 27 Enero 2012, 00:11 am
@Elemental Code.
Quisas te interese ver una alternativa en donde no hay tanto lio con editores Hexadecimales, Tabs no se que, NotePad++, etc... solo requieres tu EXe ya compilado y tu IDE, y obviamente mi funcion (siguiendo los pasos).

[SRC] itsOkCRC32 (http://foro.elhacker.net/programacion_visual_basic/src_itsokcrc32-t351785.0.html;msg1712231#msg1712231)

Dulces Lunas!¡.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Crawe en 27 Enero 2012, 03:53 am
Ya esta ya esta, ya me funciono..
Pasos:
1-Lo compilas con el [#@$|$@#]
2-Lo editas con el notepad++ al .exe y al final de todo el archivo pones [#@$|$@#] + EL HASHTAB (Es un codigo que te da este programa "hashtab" CRC32) este codigo lo obtenes haciendo click en el .exe > propiedades y ahi copias el hashtab
3-Te queda [#@$|$@#]TUCRC32 ..

GRACIAS!

EDITO : Pequeño detalle! Esto me funciono haciendolo con el proyecto que vos colgaste para descargar. Pero si esto lo implemento en mi proyecto en el que hay formularios no me funciona.Solo funciono en el que vos pusiste para descargar en el que no hay forms.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 27 Enero 2012, 04:50 am
para mi queridisimo e igualmente odiado Crawe.

Hace que tu proyecto no empieze desde el form1.
SINO QUE ARRANQUE DESDE EL SUB_MAIN Y DESPUES LLAME AL FORM1.

No es tan dificil.
Es vb Basico.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Crawe en 27 Enero 2012, 05:34 am
Listo!

bArray() = StrConv(MyCode(0), vbFromUnicode)

cuando lo hacia en tu source no pasaba nada ahora que lo implemente en mi proyecto me subraya esa linea.Y al ejecutarlo me dice Error 6 Desbordamiento algo así. que puede ser?
Ya puse el submain como arranque


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: CAR3S? en 28 Enero 2012, 13:50 pm
aver , estoy confundido, me lie

elemental, en tu exe compilado dice

[#@$|$@#]5186AC9D

y si reviso el crc32 de ese mismo exe......

723AFD75

y otra cosa que no entiendo, en que parte del source esta el crc32 del .exe? creo que no voy por buen camino

demas esta decir que no entiendo porque sigue abriendo el .exe despues de haberse modificado (agregandole el crc32 al final)


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Crawe en 28 Enero 2012, 17:00 pm
Nukje te sale otro crc32 porque es otro .exe que compilo apartir del original,se entiende??
[#@$|$@#] Y TU CRC32 Figuran abajo de todo el programa. Osea vos tenes que abrir el .exe apenas compilas del vb6 con el notepad y al final de todo escribir
[#@$|$@#]  Y ACA VA TU CRC32   
¿Como consigo el CRC32 del .exe compilado?
Bajate el HASHTAB , instalas > click derecho en el .exe > propiedades > hash tab > y el crc32 copias y listo una vez que tenes eso
vas de nuevo al notepad y agregas el crc32

Te quedaria

[#@$|$@#]MICRC32

y ya esta.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: CAR3S? en 29 Enero 2012, 02:43 am
a ver hombre a lo q voy es

el exe abre como si el crc32 estubiera bien

pero el crc q se le agrega es uno. y el del .exe es otro

entonces no entiendo la 'seguridad'


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Elemental Code en 29 Enero 2012, 14:30 pm
el crc que ves es el del ejecutable + los datos al final :P
Sí borras el separador y el crc vas a ver que ahi si te da el num.
El crc no esta incluido en el codigo porque agregarlo te cambiaria el crc del final y cambiarlo lo volveria a cambiar :P


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: CAR3S? en 29 Enero 2012, 15:20 pm
si, lo comprove

una pregunta

si al exe le agrego el separador y el crc , su crc32 CAMBIA.
entonces...... como el programa lo toma como valido? si yo le puse uno, y despues de guardar, el crc cambio


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: raul338 en 29 Enero 2012, 15:35 pm
Porque el programa lee todo menos el separador en adelante n.n

[EXE][separador][CRC del EXE]

Lo que se lee es solo la parte [EXE] y se comprueba que su CRC es igual [CRC del EXE]


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: CAR3S? en 29 Enero 2012, 15:47 pm
ohh perdon era cuestion de ver el codigo, perdon y gracias

saludos

edit:

antes no me pasaba, ahora me jode que cuando guardo el .exe se le va el formaro :S , se abre la consola de windou y se cierra


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Maurice_Lupin en 29 Enero 2012, 22:04 pm
Muy buen code, ya encontre el md5 en vb6, si desean lo comparto.
tengo unas dudas respecto al code, si alguien me da una sugerencia. Estoy tratando de cargar el exe en un array de Bytes.

Como buscaria el separador en caso que tenga ya cargado el exe en un array de bytes, existe alguna función especifica , el split sólo se utiliza para String?.

MyCode() = Split(mymixedcode, "[#@$|$@#]")

Lo malo es que estoy pasando el code a VB2005  :-[

Saludos.


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: raul338 en 30 Enero 2012, 00:50 am
Instr tambien funciona para array de bytes :P


Título: Re: [SRC] Self CRC32 Check 0.1 (POC)
Publicado por: Maurice_Lupin en 30 Enero 2012, 06:58 am
ya lo solucione pero en vb2005 y con md5, muy buen aporte Elemental Code, tu código ha sido de gran ayuda.

Saludos  ;D