Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - _Enko

#401
Ingeniería Inversa / Re: crackme 06 by Enko
10 Diciembre 2011, 15:23 PM
Muy buena, felicitaciones!!!!



Lo interesante no es tanto el algoritmo que es bastane sencillo, sino crear el serial en si :)

El tema del keygen no es tan complicado, pero hacerlo seria mas complicado que escribir el crackme en si :)

No hay tag de  spoiler en este foro ^^

Saludos.
#402
Ingeniería Inversa / crackme 06 by Enko
8 Diciembre 2011, 18:14 PM
Les dejo este keygenme que contiene una rutina de verificacion de licencias bastante particular. (cuando lo analicen, sabrán a lo que me refiero).
Generar llave valida les será particularmente "entretenido".

No contiene ningun tipo de proteccion anti-debug.

Mencion de honor: para el que logre hacer un parche
         mostrando el mensaje correcto.

Medalla de BRONCE: licencia valida.
Medalla de PLATA: licencia valida para  su NICK.
Medalla de ORO: al que genere un keygen valido.



http://www.mediafire.com/?ttc496dzbhf18ht
http://www.megaupload.com/?d=Y5GABYYW
http://dl.dropbox.com/u/51061541/crackme6.7z

Diviertanse y saludos.
#403
Ingeniería Inversa / Re: [Reto] Diofanto's Crackme
7 Diciembre 2011, 18:00 PM
peterpunk, el crackme lo hice mitad/mitad. C/Asm

La parte del CRC la hice en asm (practicamente copypast de tu rutina original)
La parte del keygen en si, en C.

Para convertir un FLOAT a su representacion hex de 32 bit tambien tuve que usar asm inline. Usando un puntero y leyendo byte a byte me daba otro resultado.
Aqui el fuente:
Código (asm) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>

unsigned int __stdcall crc_check(char *, unsigned int);
unsigned int __stdcall crc_table();
unsigned int __stdcall _rand(unsigned int);
extern unsigned int randseed;



int main(void)
{
int iCount, tCount;
char serial[]= "1111-";
char user[] = "0000000000000000";
unsigned int kx, k1, k2, k3, k4, k5, r;
float r1,a,b,c;
printf("User: ");
scanf("%s", &user);
randseed = GetTickCount();
crc_table();
kx = crc_check(user, strlen(user));
for(tCount=0; tCount<=10; tCount++){
for(iCount=0; iCount<=3; iCount++)
serial[iCount] = (char) _rand(26);
k1 = (serial[3] * 0x44A8) + (serial[2] * 0x2A4) + (serial[1] * 0x1A) + (serial[0]) ;

for(iCount=0; iCount<=3; iCount++)
serial[iCount] += 65;

k2 = (kx & 0xFF) + 1;
k3 = ((kx >> 0x10) & 0xFF) + 1;
a = k3; //180
b = k2; //146
c = k1; //33k
r1 =  (-b + sqrt(b * b + 4 * a * c)) / (2 *a);
r1 = sqrt(r1);

printf("%s", serial);
__asm{
push eax
mov eax, r1
mov r, eax
pop eax
}

printf("%X", r);
printf("\n");
}
system("pause");
return 0;
}

Código (asm) [Seleccionar]

include '%fasminc%\win32a.inc'

format MS COFF

public crc_table as '_crc_table@0'
public crc_check as '_crc_check@8'
public _rand as '__rand@4'
public randseed as '_randseed'


section '.text' code readable executable

proc _rand, range  
mov eax,[range]
imul edx, [randseed], 0x08088405
inc edx
mov [randseed], edx
mul edx
mov eax, edx
ret
endp


proc crc_table
push esi edi ebx
mov     edi, 0xEDB8832D
inc     edi
xor     ebx, ebx
mov     ecx, table
.crc_start:
movzx   eax, bx
add     eax, eax
mov     dx, 0xFFF7
.first:
test    al, 1
je      .next
shr     eax, 1
xor     eax, edi
jmp     .over
.next:
shr     eax, 1
.over:
inc     dx
jnz     .first
mov     [ecx], eax
inc     ebx
add     ecx, 4
cmp     bx, 0x100
jnz     .crc_start
pop ebx edi esi
ret
endp

proc crc_check, user, len    
push esi edi ebx  
mov     ebx, [user]          
mov     esi, [len]          
mov     edi, 0x50554E4B
.crc_start:          
mov     edx, edi              
mov     eax, [ebx]            
and     eax, 0xFF              
xor     al, dl                
mov     eax, [eax*4+table]    
shr     edx, 8                
xor     eax, edx              
mov     edi, eax              
inc     ebx                    
dec     esi                    
jnz     .crc_start
not     edi                    
mov     eax, edi
pop ebx edi esi
ret              
endp

section '.data' data readable writeable
randseed dd 0
table dd 0xFF dup ?


pd: A... Diofanto, asi la bicuadratica tiene mas sentido con el nombre.

Gracias por el buen crackme, podria ahora hacerlo completamente en asm ya que el problema no era la fpu, sino la resolvente estaba buggeada.
#404
Ingeniería Inversa / Re: Crackme Vol. 4 Por Flamer
7 Diciembre 2011, 17:51 PM
Cita de: Flamer en  7 Diciembre 2011, 17:45 PMyo el creador del crackme ni conel codigo fuente he encontrado un serial valido y nose las respuesta del crackme(no seme enojen por eso pero nose y no sabia que el creador tendria que saber los seriales: nose si sepueda crackear y nose si tenga seriales validos) el boton si se puede parchar pero los seriales nose si hay
Y como pretendes que alguien haga un keygen si no sabes si realmente se puede?

Antes de subir un keygenme deberias minimo tener un serial valido.

adelante, hace un keygen, aqui tienes el fuente:
Citar
if(serial > 0) and (serial < 0) then
  SerialValido()
else
   SerialInvalido()
end;


Saludos.
#405
ASM / Re: Pasar a código ensamblador [Ayuda]
6 Diciembre 2011, 13:54 PM
Tampoco puedes escribir codigo en assembly y pensar que cualquier ensamblador te lo tomaria.
Es decir, entre los distintos ensambladores hay ciertas diferencias. Asi que tendras que elegir que ensamblador usaras como back-end de tu compilador.

En EntryPoint estan enlazados:
http://foro.elhacker.net/asm/entry_point-t256455.0.html

cualquiera te serveria, lo unico a resaltar es que con masm32 solo podrias producir ejecutables para windows. Con Nasm/Fasm no tienes esa limitacion.

Saludos.
#406
ASM / Re: [Codigo] Pequeño Servidor HTTP
5 Diciembre 2011, 23:38 PM
A... no habia entendido "hilo trabajador"....

QueueUserWorkItem, solo se usa RET. Confirmado :)


Gracias Nuevamente.
#407
Lo único postivo es que con estado economico precario, me imagino que terminaran esas tremendas subidas de nros de version con poco cambio visible que no requiere subir todo un numero de version... :silbar:
#408
keygenme en php, solo funciona para usuarios con menos de 5 letras.  :silbar:
Código (php) [Seleccionar]

<html>
<head>
<title>MCKSys Crackme4 Keygen</title>
</head>
<body>
<form action="#" method="post">
Name: <br>
<input type="text" name="txtName">
<br><br>
<input type="submit" value="generate" name="calc">
</form>
<?php
if(isset($_POST['calc'])){
$name $_POST['txtName'];
$checksum 0;
for(
$i=0$i<=strlen($name)-1$i++)
$checksum += ord($name[$i]);
$checksum = (string) $checksum;
$code "M0C0K0S0y0s0004";
$l strlen($checksum)-1;
for(
$i=0$i<=$l$i++)
$code[13-($l-$i)*2] = $checksum[$i];
echo(
$code);
}
?>

</body>
</html>

user: _Enko
pass: M0C0K0S0y4s9024

Saludos.
#409
ASM / Re: [Codigo] Pequeño Servidor HTTP
5 Diciembre 2011, 23:20 PM
Hola, la idea es que no es un hilo solo.

Es decir, para cada conexion nueva, se genera un hilo nuevo. Y cuando se desconecta el usuario, creo que tendria que terminar el hilo.

la tecnica es super saturable. 100 peticiones equivaldrian a 100 hilos.

Por eso creo que cada vez que el hilo hace su trabajo, deberia terminarlo.
(Hilo creado con CreateThread)

Citar
Si llama a ExitThread terminas el hilo trabajador ese, mala idea.
con usar ret, el hilo es eliminado?
#410
Cita de: MCKSys Argentina en  5 Diciembre 2011, 18:01 PM
PD: Como verás con el decompilador, ActionScript es muy parecido a javascript o C.

Hace años he programado bastante con ActionScript, asi que ningun problema ^^

para complicar la cosa y obligar desempacar, tal vez hubiera sido buena idea incluir cabeceras swf por todos lados, tambien se podria tener muchos swf importados en el swf principal.

Saludos.