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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Desafíos - Wargames (Moderador: Kasswed)
| | | |-+  Problemas crackeando Encriptacion de un dato
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas crackeando Encriptacion de un dato  (Leído 4,026 veces)
Susanita10

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problemas crackeando Encriptacion de un dato
« en: 21 Agosto 2015, 18:09 pm »

Muy buenas tardes, Soy nueva en el Foro y en el mundo del Cracking.

Necesito ayuda con un tema de Cryptografia de la función CryptCreateHash, CryptCreateHash, y CryptDeriveKey.

Estoy con un compañero, crakeando un .exe que genera unos archivos binarios, hasta ahora todo bien, excepto por dos de los archivos que genera el programa.

El problema resulta en que uno de los archivos me cifra una ruta de la computadors con una clave que ya descubrimos gracias al Ollydbg, sin embargo usando el seudo código del IDAPRO6.4 el programa te ayuda un poco más a ver que containers utilizó el programador fuente para realizar su cifrado.

En este sentido,según la ayuda del MSDN, dichas funciones tienen los siguientes parámetros:
BOOL WINAPI CryptCreateHash(
  _In_  HCRYPTPROV hProv,
  _In_  ALG_ID     Algid,
  _In_  HCRYPTKEY  hKey,
  _In_  DWORD      dwFlags,
  _Out_ HCRYPTHASH *phHash
);

El programa me funciona bien si coloco los valores por defecto.
CryptCreateHash(hCryptProv, 0x8003, 0, 0, &hHash)
Donde hCryptProv es el valor que me arroja otra función (CryptAcquireContext).

Si embargo, el IDA me arroja la siguiente sintaxys:
        v4 = (HCRYPTHASH *)((char *)v2 + 4);
        if (!CryptCreateHash(*(_DWORD *)v2, 0x8003u, 0, 0, (HCRYPTHASH *)v2 + 1))
   
v4 = (HCRYPTHASH *)((char *)v2 + 4);
   v5 = *(_DWORD *)(a2 - 8);
   v11 = (const BYTE *)CString::GetBuffer((CString *)&a2, v5 + 1);
   if (!CryptHashData(*v4, v11, v5, 0))
      sub_407C50(-536869115, 0, 79, (int)a_IncCkexceptio);
   CString::ReleaseBuffer((CString *)&a2, -1);
   v6 = *v4;
   v7 = *(_DWORD *)v2;
   v11 = 0;
   if (!CryptDeriveKey(v7, 0x6801u, v6, 1u, (HCRYPTKEY *)v2 + 2))
      sub_407C50(-536869113, 0, 79, (int)a_IncCkexceptio);
   v13 = 0;

Donde v2=a una plabra password que ya se descubrió en el Olly.
y a2= es la longitud en esa palabra.

Necesito generar el archivo fuente tal cual como lo hizo el programador para luego generar el archivo .bin que tiene este dato cifrado.

Sin embargo, para generar v5 creo una variable int que va a ser (strlen(Password) -8) y luego la casteo a DWORD no lo admite. (no admite los casteos de LPTSTR a string ).

No entiendo por que crea el objeto tipo hash con v4???.

Yo trato para crear v11. Generar un objeto tipo CString y a ese objeto le digo ss.Getbuffer(&a2,v5+1), y me dice que no puede ejecutar el GetBuffer

Y menos me admite como tipo parametro a v11 de CryptHashData.

Lo se estpy en tremendo KILOMBO, alguien podría ayudarme con algo adicional que no estoy tomando en cuenta, algún tipo de conversión o bien alguna pista para leer.

 :D


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crackeando un programa
Ingeniería Inversa
Loxer7 1 2,546 Último mensaje 15 Septiembre 2004, 21:57 pm
por Nand0
Crackeando un programa !!!!!!!!!!!!!
Ingeniería Inversa
al3 5 6,301 Último mensaje 10 Febrero 2005, 16:26 pm
por al3
Crackeando problemas (yoda's protector) « 1 2 »
Ingeniería Inversa
Darksp1rit 12 6,941 Último mensaje 6 Marzo 2008, 12:34 pm
por Darksp1rit
¿Una variable es un dato o contiene un dato?
Programación General
theluigy13etv 6 4,571 Último mensaje 19 Agosto 2011, 23:01 pm
por theluigy13etv
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines