elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [SRC] itsOkCRC32
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [SRC] itsOkCRC32  (Leído 6,532 veces)
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
[SRC] itsOkCRC32
« en: 27 Enero 2012, 00:06 am »

.
La funcion lo que realiza es una verificación del exe para saber si a ido modificaco o no (es una seguridad muy basica).

Edito--->
(NO ES NECESARIO) OJO si lo van a usar deberan realinear el formato PE... o usar los ultimos 4 bytes de el exe (habitualmente son bytes 0)

En un modulo...

Código
  1.  
  2. Option Explicit
  3.  
  4. #Const INSERTCRC32TOEXE = False
  5.  
  6. Public Function itsOkCRC32() As Boolean
  7. '   //
  8. '   //  Funcion itsOkCRC32 creada por BlackZeroX (http://infrangelux.hostei.com)
  9. '   //
  10. '   //  Instrucciones:
  11. '   //  * COMPILA TU EXE FINAL con la constante INSERTCRC32TOEXE = false.
  12. '   //  * Cambia INSERTCRC32TOEXE de false a true ( #Const INSERTCRC32TOEXE = true )
  13. '   //  * Cambia la linea  {Open "c:\testCRC32.exe" For Binary As hFile} de este proceso con
  14. '   //  la ruta del exe que compilaste anteriormente, por ejemplo {Open "c:\testCRC32.exe" For Binary As hFile}
  15. '   //  * Ejecuta el proyecto desde este IDE, si todo a ido correctamente les aparecera un mensaje {"CRC32 configurado Correctamente"}.
  16. '   //  * Comprube tu EXE Final {c:\testCRC32.exe} ejecutandolo directamente.
  17. '   //  Si todo a hido correctamente el exe te mostrara {"CRC32 Correcto"} si solo has generado el exe y no cambiaste {INSERTCRC32TOEXE a true} te mostrara {"CRC32 erroneo"} en este ejemplo.
  18.  
  19. Dim byteData()              As Byte
  20. Dim dwSizeFile              As Long
  21. Dim dwCRC32ReadFile         As Long
  22. Dim dwCRC32Generate         As Long
  23. Dim oCRC32                  As cCRC32
  24. Dim hFile                   As Integer
  25.  
  26.    hFile = FreeFile
  27. #If (INSERTCRC32TOEXE = False) Then
  28.    Open App.Path & "\" & App.EXEName & ".exe" For Binary As hFile
  29. #Else
  30.    Open "c:\testCRC32.exe" For Binary As hFile
  31. #End If
  32.        dwSizeFile = LOF(hFile)
  33.        If ((dwSizeFile - 4) > 0) Then
  34. #If (INSERTCRC32TOEXE = True) Then
  35.            ReDim byteData(0 To (dwSizeFile - 1))
  36. #Else
  37.            ReDim byteData(0 To (dwSizeFile - 1 - 4))
  38. #End If
  39.            Get 1, , byteData
  40.            Get 1, , dwCRC32ReadFile
  41.  
  42.            Set oCRC32 = New cCRC32
  43.            dwCRC32Generate = oCRC32.GetByteArrayCrc32(byteData)
  44.            Set oCRC32 = Nothing
  45.  
  46.            If (dwCRC32Generate = dwCRC32ReadFile) Then
  47.                itsOkCRC32 = True
  48. #If (INSERTCRC32TOEXE = True) Then
  49.                MsgBox "CRC32 Ya se encontraba configurado."
  50.            Else
  51.                Put hFile, , dwCRC32Generate
  52.                MsgBox "CRC32 configurado Correctamente."
  53.                End
  54. #End If
  55.            End If
  56.        End If
  57.    Close hFile
  58.  
  59. End Function
  60.  
  61.  

cCRC32.cls (Modulo de clase)

Código:

Option Explicit

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

Private crc32Table() As Long

Public Function GetByteArrayCrc32(ByRef buffer() As Byte) As Long
Dim crc32Result     As Long:    crc32Result = &HFFFFFFFF
Dim i               As long
Dim iLookup         As long
   
   For i = LBound(buffer) To UBound(buffer)
      iLookup = (crc32Result And &HFF) Xor buffer(i)
      crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And 16777215 ' nasty shr 8 with vb :/
      crc32Result = crc32Result Xor crc32Table(iLookup)
   Next i
   
   GetByteArrayCrc32 = Not (crc32Result)

End Function



Private Sub Class_initialize()

    ' This is the official polynomial used by CRC32 in PKZip.
    ' Often the polynomial is shown reversed (04C11DB7).
    Dim dwPolynomial As Long
    dwPolynomial = &HEDB88320
    Dim i As Integer, j As Integer

    ReDim crc32Table(256)
    Dim dwCrc As Long

    For i = 0 To 255
        dwCrc = i
        For j = 8 To 1 Step -1
            If (dwCrc And 1) Then
                dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
                dwCrc = dwCrc Xor dwPolynomial
            Else
                dwCrc = ((dwCrc And &HFFFFFFFE) \ 2&) And &H7FFFFFFF
            End If
        Next j
        crc32Table(i) = dwCrc
    Next i

End Sub

Private Sub Class_Terminate()
    Erase crc32Table
End Sub


Ejemplo:

Código
  1.  
  2. option explicit
  3.  
  4. Sub main()
  5.    If (itsOkCRC32) Then
  6.        MsgBox "CRC32 Correcto"
  7.    Else
  8.        MsgBox "CRC32 erroneo"
  9.    End If
  10. End Sub
  11.  
  12.  

Decargar Ejemplo (Compilar en "C:\" el proyecto con el nombre "testCRC32.exe" o configurar las lineas segun lo requieran y con la constante en false, despues solo ejecutar desde el IDE con la constante en true):
http://infrangelux.sytes.net/FileX/index.php?dir=/BlackZeroX/Programacion/vb6/ejemplos%20VB6&file=itsOKCRC32.zip



Alternativa: http://foro.elhacker.net/programacion_visual_basic/src_self_crc32_check_01_poc-t351610.0.html

Dulces Lunas!¡.


« Última modificación: 28 Enero 2012, 08:56 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #1 en: 27 Enero 2012, 00:25 am »

bien hecho  ;-)
ratos de no ver codigo tuyos zero ;D

una cosa no seria mas elegante y eficiente mapear el archivo


« Última modificación: 27 Enero 2012, 00:36 am por RHL » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [SRC] itsOkCRC32
« Respuesta #2 en: 27 Enero 2012, 02:11 am »

Para algo como esto no... pero si te das cuenta se carga todo el archivo en memoria y acceso a los bytes directamente, mapear el archivo en memoria es hacer lo mismo, crear una copia del archivo en la memoria pero con APIS espesificas, y bueno esto seria viable en BDD o cosas por el estilo donde el archivo deba estar siempre en memoria y en este caso solo se carga una vez y despues se descarga dicho bloque de bytes.

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Crawe

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #3 en: 27 Enero 2012, 02:38 am »

Disculpa que te moleste.He seguido todas las instrucciones posibles y no me resulta.
Lo que hice fue hacer el primer .exe (compilar) en el disco c. en modo False
Luego hice otro ejecutable guardandolo en el escritorio en modo True y cambiando la linea c:\test por c:\nombredemiejecutable.exe .. Luego abro cualquiera de los dos y no pasa nada.. no tira ningun msgbox .
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [SRC] itsOkCRC32
« Respuesta #4 en: 27 Enero 2012, 02:44 am »

Lo que pasa es que NO debes compilar con la constante en true ya que claramente dice:

Ejecuta el proyecto desde este IDE, si todo a ido correctamente les aparecera un mensaje {"CRC32 configurado Correctamente"}.

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Crawe

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #5 en: 27 Enero 2012, 02:48 am »

Dentro del codigo hay muchos INSERTCRC32TOEXE  = false / true o lo que fuese, yo el unico que cambie fue el que decia Const INSERTCRC32TOEXE  = false a true , era ese o es otro?
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [SRC] itsOkCRC32
« Respuesta #6 en: 27 Enero 2012, 03:01 am »

.
Perdon escribi si leer bien.

Si es la que dice #const INSERTCRC32TOEXE = False, despues edita la otra linea que se dice y por ultimo ejecuta desde el IDE... subi un proyecto practicamente configurado ya, revisa el 1er post.

Dulces Lunas!¡.
« Última modificación: 27 Enero 2012, 03:07 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
Crawe

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #7 en: 27 Enero 2012, 03:12 am »

Perdon por la ignorancia, pero que es el IDE.. que tanto nombras?
En línea

Crawe

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #8 en: 27 Enero 2012, 03:19 am »

Sinceramente no funciona, porque al usuario que yo le doy mi programa debe tener una replica en el disco c:\ y la idea es que al abrir el archivo se de cuenta unicamente si esta modificado por hexadecimal o no.Ahora una vez que hice todo esto me salio "Configurado correctamente" ya que se ve que funciona comprobando que haya un archivo en el c:\ .. Después agarre al archivo lo modifique con hexadecimal y seguia diciendo configurado correctamente, que estoy haciendo mal? Quizas lo que yo busque no sea esto y sea todo un mal entendido.

Yo lo que necesito es que mi archivo se de cuenta si se modifico desde un hexadecimal para que no me ripeen.
En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: [SRC] itsOkCRC32
« Respuesta #9 en: 27 Enero 2012, 04:55 am »

tenes la mas palida idea de visual basic?  :rolleyes:

lo que hizo blackzero ademas de hacer algo re jodido con muchos simbolitos de Sharp (#)

fue diseñar un "agregador" de codigo CRC32 al final de el ejecutable final desde la ide
(la ide es lo que vos conoces como "Visual basic 6.0" esa cosa adonde armas forms y pones codigos)

te recomiendo que aprendas algo de vb6 antes de todo esto.
Yo admito que se poco, pero no son nociones complicadas las constantes y el IDE.

De que es ese dichoso programa que necesitas que nadie te modifique a todo esto? :S



Ahora para mi queridisimo BlackZeroX
Che habra algun codigo que me salga bien sin que venga uno de ustedes que la tiene clara y le pase el trapo?  ;-) ;-)
Si se te ocurre un buen metodo de hacer esto semi universal para cualquier exefile (necesitamos un RunPE sin que papa antivirus lo detecte como malware cuando es nada que ver o hacer otra magia negra :P) avisame que de ultima diseño la interfaz o el icono... o sino te cebo mate o lo que pueda ayudar :P

En línea

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

Mis programas
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines