Autor
|
Tema: Reto Crackme 6 De Flamer (Leído 17,787 veces)
|
MCKSys Argentina
|
Keygen (en VB6) Suponiendo que en un form hay un boton (Command1) y un textbox (Text1): Function getForcedChar(testInt As Integer) As String Dim hallado As Boolean Dim car As Integer Dim valor As Integer
hallado = False Do While (Not hallado) car = Int((91 * Rnd) + 32) valor = ((((((car + &H6B - 4) * 5) / 2) * 3) Xor &H19C) And 1) hallado = (valor = testInt) Loop getForcedChar = Chr(car) End Function
Private Sub Command1_Click() Dim serial As String Dim i As Integer
For i = 1 To 20 serial = serial + getForcedChar(IIf((i = 3) Or (i = 5) Or (i = 13) Or (i = 17), 1, 0)) Next i Text1.Text = serial End Sub
Analisis: len serial=20 chars str((((((chr(serial ) + 6Bh - 4) * 5) / 2) * 3) xor 19Ch) & 1) = "00101000000010001000"
Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Tinkipinki
Desconectado
Mensajes: 242
|
Gracias MCKSys, con el codigo que has posteado se puede ver claramente como trabaja el algoritmo de calculo del serial a parte que nos brinda la oportunidad de adentrarnos un poco mas sobre la programacion en VB para los que no dominamos este entorno Saludos
|
|
|
En línea
|
|
|
|
Flamer
Desconectado
Mensajes: 1.052
crack, crack y mas crack...
|
Balla fly eres buenisimo para esto felisidades para la otra tela pondre mas difisil
saludos flamer ya te anote en la lista
|
|
|
En línea
|
|
|
|
ThunderCls
Desconectado
Mensajes: 455
Coder | Reverser | Gamer
|
Hola Ya veo que MCKSys lo resolvio, felicidades amigo Igual solo hare unos apuntes de mi parte. Serial Facil ========for(int i = 0; i < strlen(serial); i++) { val = serial[i] + 0xE0; strcat(serialfinal, val); }
Name: Thunder Serial: 13414815514E144145152 Nota: En esta parte del crackme hay un bug(al no ser que se haya echo conscientemente), cada vez que insertas un serial incorrecto, se acumulan las cadenas del serial correcto una a continuacion de la otra, ej: Serial correcto para nuestro name: 123 Si ponemos 4 veces un serial incorrecto el serial correcto ya no seria 123, sino 123123123123123, por lo que creo que se ha olvidado de limpiar la variable en cada intento y de ahi el bug. Serial Dificil =========length = 20 Bit = ((((serial + 0x67 * 5) / 2) * 3) xor 0x19C) and 1
Tomando solo numeros por flojera podemos crearnos una tabla: Tabla de Bits ========== 1234567890 0010001000
Ahora solo ubicamos los numeros para lograr la serie de bits correctos Bits correctos = 00101000000010001000 Serial: 12343668901234567890
PD: Una ultima acotacion, pal cuida el idioma si?, muchas faltas de ortografia en los textos...(critica constructiva ). Por lo demas no ha estado mal, sigue por ese camino. Un saludo a todos y...Tinkipinki te invito a que revises bien la parte facil para que veas que no era dificil sacar un serial valido para tu nick.
|
|
|
En línea
|
|
|
|
Flamer
Desconectado
Mensajes: 1.052
crack, crack y mas crack...
|
Hola Thunder si es error mio lo del bug orita biendo el codigo fuente me falto limpiar la variable pero en fin felisidades sebe que eres bueno como fly
boy a notarte en la lista
a mi ortografia no puedo mejorar, boy a tener que buscar una pagina de autocorrecion
saludos Flamer
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
a mi ortografia no puedo mejorar, boy a tener que buscar una pagina de autocorrecion
SIEMPRE se puede mejorar. Es cuestión de perseverar... Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
apuromafo CLS
|
felicidades a thunder bueno, a lo mas tengo un mini tiempo y comento: mi kg para tu primera instancia de ejecución, aunque intente hacerlo mejor, siempre me crasheo..asi que adjunto lo unico que me resulto: tu programa y mi kg para el primer nivel, hecho en c++ http://www.mediafire.com/?pvvx5vyu4b8odlddetalles normales_ que habia tenido para el 1, pero que a la hora por no ser buen coder obviamente no habia pensado en keygen para usuario serial /nivel 1 tomas los valores: DS:[0040102C]=7348B48B (msvbvm60.rtcAnsiValueBstr) pero vemos una comprobacion 00409C53 . 83F8 04 CMP EAX,4 00409C56 . 0F9FC2 SETG DL por ende el primer usuario debe ser igual o mayor a 4 carácteres como hay un detenimiento no puede ser mayor a 15 mas adelante se ve (integrer) (smartcheck) el cual confirma los valores, mientras revisaba hoy mi codigo vi que thunder posteó su solucion y descubrimiento del bug, eso me confirmo el tema , val = serial + 0xE0; el + E0 viene de aqui
00409DF3 . 8D95 74FFFFFF LEA EDX,DWORD PTR SS:[EBP-8C] 00409DF9 . 66:81C1 E000 ADD CX,0E0 00409DFE . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
pero a diferencia de otros lenguajes, termina en 00 y este es descartado del serial (00+E0)
yo de primera preferia este el lugar para fishear con Bp condicional en ECX==0 y el valor a loguear CX 00409E09 . 66:890F MOV WORD PTR DS:[EDI],CX ; fish
Name:apuromafo serial:14115015515214F14D14114614F
la concatenacion 00409E2E . FF15 B0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarCa>; msvbvm60.__vbaVarCat
^^ ahora bien portando la idea en C codigo keygen tipo en C++ codeblock mingw el que use yo fue
http://prdownload.berlios.de/codeblocks/codeblocks-10.05mingw-setup.exe
#include <conio.h> #include <iostream> #include <windows.h> #include <string> #include <stdio.h> using namespace std;
int main() { char palabra[20],c=' ';
printf(" Keygen Sakura by Apuromafo 06-8-12 \n"); printf(" Nivel user-serial nivel 1 de 2 niveles \n"); printf(" para Crackme 6 de Flamer \n"); printf(" OBS:serial valido solo para la primera ejecucion, x bug del bufer\n"); printf(" Uso:Ingresa usuario y te dira el serial (osea +0xE0) \n"); printf(" favor mas de 4 letras el nombre y menos de 15 \n\n "); printf(" hecho solo por un mini tiempo libre \n\n ");
printf("Usuario = "); scanf("%s",palabra); printf("Serial = "); int cont=0,mayor=0,tam=strlen(palabra); for(int i=0;i<=tam;i++) { if(c!=palabra[i]) { if(cont>mayor) mayor=cont; c=palabra[i]; cont=1; } else
cont++;
int opc1;
opc1 = (palabra[i] + 0xE0); if(opc1!=0xE0) printf("%X", opc1); } getch();
|
|
« Última modificación: 7 Agosto 2012, 05:40 am por apuromafo »
|
En línea
|
Apuromafo
|
|
|
apuromafo CLS
|
flamer, para que no te enojes, te edito el post anterior y te agrego el keygen del nivel 1 en c++ , obviamente por tema de tiempo no fixeo los tamaños de largo y porque mi nivel de programación es bajo en esos temas sobre todo porque siempre c++ me tiende a explotar los exes jiji
saludos Apuromafo
pd: normalmente para la primera vez es Nombre:apuromafo serial:14115015515214F14D14114614F para la segunda vez que ejecutas (es como si fuera apuromafoapuromafo) usuario:apuromafo serial:14115015515214F14D14114614F14115015515214F14D14114614F
esta considera apuromafoapuromafo para la validacion, pero uno simplemente coloco apuromafo en la 2da vez...esop, animo en todo
|
|
« Última modificación: 7 Agosto 2012, 05:46 am por apuromafo »
|
En línea
|
Apuromafo
|
|
|
Flamer
Desconectado
Mensajes: 1.052
crack, crack y mas crack...
|
hola apuromafo no te molestes no me enojo esta bien solo que boy a tener que modificar la tabla de tus logros donde dise serial boy aponer keygen pero te informo te quedas en terser lugar nose si queden conformes con los lugares que lesdi, pero aclaro todos son buenos Crackers;-) saludos Flamer
|
|
|
En línea
|
|
|
|
apuromafo CLS
|
no hay lio, igual fue un gran crackme para confirmar , no tengo el tiempo como todos, pero apesar de estar oxidado algo se logra.- respecto al numero 2 bajo la idea de los bytes por thunder: mediante array los 20 numeros (en c++) y arrays adjunto como keygen para el LV 2 http://www.mediafire.com/?fjnjjw0pxxgoin2#include <iostream> #include <algorithm> #include<stdlib.h> #include<iostream> #include<time.h> using namespace std;
int main(void) { int num,c; srand(time(NULL)); //00101000000010001000
for(c=1;c<=2;c++) //XX101000000010001000 { int array[] = { 1,2,4,5,6,8,9,0 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+8); for(int i=0; i<1; i++) cout << array[i] <<"";// << endl; // num=1+rand()%(11-1); // cout<<num<<""; } int array[] = { 3,7 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+1); for(int i=0; i<1; i++) cout << array[i]<<"";// << endl;
// cout<<"3"; //00X01000000010001000
for(c=4;c<=4;c++)//001x1000000010001000 { // num=1+rand()%(11-1); //cout<<num<<""; int array[] = { 1,2,4,5,6,8,9,0 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+7); for(int i=0; i<1; i++) cout << array[i]<<"";// << endl; } int Array1[] = { 3,7 }; srand( unsigned( time(NULL) ) ); random_shuffle(Array1, Array1+1); for(int i=0; i<1; i++) cout << array[i]<<"";// << endl;
// cout<<"3"; //0010X000000010001000 for(c=6;c<=12;c++) //00101X00000010001000 { // num=1+rand()%(11-1); //cout<<num<<""; int array[] = { 1,2,4,5,6,8,9,0 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+6); for(int i=0; i<1; i++) cout << array[i] <<"";// << endl; } // int Array1[] = { 3,7 }; srand( unsigned( time(NULL) ) ); random_shuffle(Array1, Array1+1); for(int i=0; i<1; i++) cout << array[i]<<"";// << endl; // cout<<"3"; //0010X000000010001000 for(c=14;c<=16;c++) //00101X00000010001000 { // num=1+rand()%(11-1); //cout<<num<<""; int array[] = { 1,2,4,5,6,8,9,0 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+5); for(int i=0; i<1; i++) cout << array[i] <<"";// << endl; } // int Array1[] = { 3,7 }; srand( unsigned( time(NULL) ) ); random_shuffle(Array1, Array1+1); for(int i=0; i<1; i++) cout << array[i]<<"";// << endl;
// cout<<"3"; //0010X000000010001000 for(c=18;c<=20;c++) //00101X00000010001000 { // num=1+rand()%(11-1); //cout<<num<<""; int array[] = { 1,2,4,5,6,8,9,0 }; srand( unsigned( time(NULL) ) ); random_shuffle(array, array+4); for(int i=0; i<1; i++) cout << array[i] <<"";// << endl; }
cin.get(); }
|
|
« Última modificación: 7 Agosto 2012, 07:13 am por apuromafo »
|
En línea
|
Apuromafo
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crackme 1 de Flamer
Ingeniería Inversa
|
Tinkipinki
|
2
|
3,156
|
23 Octubre 2011, 06:35 am
por Tinkipinki
|
|
|
Crackme Vol. 4 Por Flamer
Ingeniería Inversa
|
Flamer
|
7
|
6,059
|
7 Diciembre 2011, 23:59 pm
por chEEtos
|
|
|
Crackme 5 De Flamer
Ingeniería Inversa
|
Flamer
|
7
|
6,205
|
14 Abril 2012, 01:21 am
por $Edu$
|
|
|
Reto Crackme 7 De Flamer
« 1 2 »
Ingeniería Inversa
|
Flamer
|
12
|
7,408
|
10 Septiembre 2012, 08:35 am
por apuromafo CLS
|
|
|
[Reto] Crackme Loki-Mouse Flamer
Ingeniería Inversa
|
Flamer
|
8
|
7,651
|
17 Marzo 2020, 08:03 am
por BloodSharp
|
|