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 - apuromafo CLS

#711
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 18:45 PM
jaja, bueno me baje el cff explorer y confirmo lo que estas haciendo, cuando pulsas la sección .text aparece un numero,

cuando VAS a la opcion "hex editor "  y vas a ese offset Apuntará en el nombre de esa sección,

me explico tengo un exe con muchas seccines una tiene nombre
.text al pulsar este me aparece  178, cuando voy al hex editor voy al offset 178h (h por hexadecimal), y aparece el punto de .text osea donde comienza el nombre de esa sección
ahora si uso ollydbg, y voy a la imagezise en la ventana dump y coloco special PE header y voy a ver el encabezado bajo y encuentro en la direccion
Citar00400178   2E 74 65 78 >ASCII ".text"        ; SECTION
00400180   DCC20600     DD 0006C2DC          ;  VirtualSize = 6C2DC (443100.)
00400184   00100000     DD 00001000          ;  VirtualAddress = 1000
00400188   00C40600     DD 0006C400          ;  SizeOfRawData = 6C400 (443392.)
0040018C   00040000     DD 00000400          ;  PointerToRawData = 400
00400190   00000000     DD 00000000          ;  PointerToRelocations = 0
00400194   00000000     DD 00000000          ;  PointerToLineNumbers = 0
00400198   0000         DW 0000              ;  NumberOfRelocations = 0
0040019A   0000         DW 0000              ;  NumberOfLineNumbers = 0
0040019C   60005060     DD 60500060          ;  Characteristics = CODE|INITIALIZED_DATA|ALIGN_16|EXECUTE|READ


no se si eso quieres comparar? o saber

insisto lo primero del PE header, cuando se ven los datos
es OPTIONAL HEADER(pensando que usas CFF( imagebase), luego ves la sección que estas mirando, y sumas o comparas en el depurador
imagebase+el valor que te dicen... y comparas con al
ahora usando la tool que te comenta karmany si colocas Offset (el numero que ves ahi arriba) , en mi caso es 178, y colocas hex verás lo mismo  pero sin traducir de ollydbg( los bytes en orden de la sección en su formato PE


supongo que eso querias confirmar?

ya antes karmany te dijo En tu caso 1B0 te dará justo la dirección de la cadena de texto .txt,


respecto a los reloc, mi sección .text no usa relocaciones, pero tu sección si los usa,

respecto a terminar el tema de una vez,   estos datos que estas viendo son del PEHEADER, y se cargan de PE imagesize, luego le sumas ese offset y ahí está, pero si quieres editar algun valor, por algo crearon con tools hexadecimal, herramientas que ademas tienen soporte para confirmar los tamaños (no agregues o quites mas tamaño del que tiene establecido) etc


bueno bro, espero sigas explorando y mirando el cff explorer, pero con ejemplos que tu conozcas sobre tutoriales de PE header


saludos Apuromafo
pd:mi exe era el kg 2 de crackme 6 de flamer aleatorios10.exe el que confirmaba los datos

#712
no hay lio, igual fue un gran crackme para confirmar :D

, 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();
}
#713
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
#714
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 02:58 AM
lo que tienes pintado es solo el nombre, por el tema de tamaño de reloc, mayor a cero, es la sección de los reloc :D

saludos Apuromafo
#715
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/?pvvx5vyu4b8odld


detalles 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();



#716
que se le puede se puede, simplemente digo que esta interesante la rutina donde pongas un serial tipo y luego compara, realmente por tiempo a lo mas veo que son cadenas no tan cotidianas  ^^
#717
ta interesante tu programita:

primera comparacion de si es binariamente mayor al otro..(usuario serial) en la dificil trabajas denuevo con los FP... de formato o estilo
004095C8=KeygenMe.004095C8 (UNICODE "00101000000010001000")

obviamente eso no es valido ;)

0040A4D1   FF15 F0104000    CALL DWORD PTR DS:[<&MSVBVM60.__vbaFpI2>>; msvbvm60.__vbaFpI2
#718
Ingeniería Inversa / Re: Unpakear este .exe
5 Agosto 2012, 06:18 AM
themida es un producto de oreans a lo menos existen muchas cosas importantes, digamos que a lo mas lo unico que se puede lograr en condiciones más simple es INLINEAR, pero desempacarlo de forma perfecta no creo que se pueda del todo

1) el desempacado puede tener 1 exe y dlls o bien 1 exe y muchas secciones con basura
2) el tiempo medio de desempacado de themida con script y DE-VM es aproximadamente de unos 2 dias , cuando el unpacking normal versiones menores a la 2, era de unas 4 horas, realmente esto es muy denso, tanto que no quise seguir explorando debido al poco tiempo de intento,  hay otros tan complejos como winlicence como vmprotect, pero lo importante es simplemente intentar parcharlo y luego modificar donde se quiera , saludos Apuromafo
pd:a lo menos deberias terminar todo el curso de ricardo que aparece en el faq y ademas intentarlo resolver sin tutorial, a lo menos es como para que comienzes a explorar los packers, tutoriales de la lista,pero themida y winlicence son peso pesado


1) armadillo es una historia, 2)asprotect es otra historia 3) winlicence es otra historia...insisto son temas muy largos de explorar , que inclusive reversers con experiencia dicen que tienen algoritmo en RSA con 1024 bytes de largo.. como para registrarlo...
#719
Desafíos - Wargames / Re: Invitacion Wargame
31 Julio 2012, 20:32 PM
Cita de: michy9115 en 30 Julio 2012, 02:05 AM
yo sigo  pegado casi al final alguien ya llego con chuck ????

michi, pero pasaste la azotea?, ahi voy
#720
a lo más se puede obtener gran parte de la "gui" pero el codigo en sí , no
pues casi todo lo que funciona detrás del codigo contiene algo de compilación..por ende no es decompilable, solo depurable (solo se puede analizar, pero no reproducir o clonar el tema)...

saludos Apuromafo