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 - mr.blood

#1
Ingeniería Inversa / [KeygenMe] Matrix
Marzo 24, 2015, 02:48:04 PM
Aquí os dejo un KeygenMe, espero que os guste. Está programado en C++ no sé que nivel de dificultad decir que tiene, para crackearlo será nivel 0, pero el reto es hacer un keygen :).

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

SaluDoS
#2
Para empezar de 0 probablemente Batch o Bash, algo sencillo y funcional, de ahí puedes pasar a un lenguaje como Python o VB y ya dar el salto a C o C++ para hacer cosas mas serias. (No me gusta Java, por muy de moda que esté).

Sa1uDoS
#3
Depende para que quieras el PC.

Tienes que tener en cuenta cuanto consumen los componentes para comprar la fuente de alimentación, por eso yo dejaría esta para el final.
Si no quieres un PC para jugar, puedes comprar una gráfica más normalita y gastarte más en el procesador (que es lo más caro).
Antes que nada debes mirar una placa madre compatible con los componentes que quieras comprar.
La RAM es bastante barata, solo debes mirar la compatibilidad con la motherboard.

No tiene porque ser el mejor PC, tiene que ser un PC adecuado a tus necesidades, para no gastar más de la cuenta.

Sa1uDoS
#4
C / C++ / Re:Calculadora básica en C
Julio 15, 2013, 07:42:06 AM
Te dejo el código un poco más corto:

Código: c

#include <stdio.h>

int main(){
   printf("####################################\n");
   printf("## Calculadora basica by Metadato ##\n");
   printf("####################################\n");

   char operaciones;
   float a,b;
   printf("Suma (S), Resta (R), Multiplicacion (M), Division (D): ");
   scanf("%c",&operaciones);
   
   printf("Ingresa los operandos:\n");
   scanf("%f %f",&a,&b);

   switch(operaciones){

    case 'S' :
    printf("%.2f + %.2f = %.2f",a,b,a+b);
    break;

    case 'R' :
    printf("%.2f - %.2f = %.2f",a,b,a-b);
    break;

    case 'M' :
    printf("%.2f * %.2f = %.2f",a,b,a*b);
    break;

    case 'D' :
    printf("%.2f / %.2f = %.2f",a,b,a/b);
    break;

    default : puts("Error!! Quizas hayas escrito la letra en minuscula...");
   }

    return 0;
}


Sa1uDoS
#5
O no tienes conceptos claros o yo no te entiendo. PEB es una estructura de Windows: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Creo que te refieres al PE y no al PEB. Puedes meter los datos que quieras, pero dependiendo de lo que quieras hacer con esos datos debes darle unos permisos u otros. Para que se ejecuten, en algún punto tiene que haber una llamada a esa zona. La forma más sencilla es cambiar el Entry Point.

Sa1uDoS
#6
Ingeniería Inversa / Re:[InyectMe] Edge
Julio 08, 2013, 06:32:09 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Sa1uDoS
#7
Me apunto, si me dejan :P.

Sa1uDoS
#8
No se en Win, no lo toco demasiado, pero en Linux funciona ;).

Debería funcionar dándole los permisos adecuados no?

Sa1uDoS
#9
Sí, es C, puedes quitar la sentencia del printf. Solo muestra la longitud de la shellcode, es algo opcional.

Puedes compilar con gcc o g++ como quieras, lo suyo, por ser C, es compilar con gcc ;). (Dev-C++ es un IDE, bastante obsoleto por cierto, te recomiendo usar otro como Code::Blocks).

Sa1uDoS
#10
Tienes un array de char, cada char ocupa 1 byte, en el metes la shellcode byte a byte.

El printf imprime la longitud de la shellcode.

(*(void(*)()) code)();

Simplemente llama a code como si fuera una función sin parámetros y que no devuelve ningún valor.

Sa1uDoS
#11
Ese es un código de Sagrini.

Donde pone code[]="..." pones tu shellcode ;).

Sa1uDoS
#12
Código: c

#include <stdio.h>
#include <string.h>

char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";

int main(int argc, char **argv)
{
printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
(*(void(*)()) code)();
return 0;
}


Te sirve?

Sa1uDoS
#13
Dudas y pedidos generales / Re:ayuda con c
Junio 30, 2013, 05:35:37 AM
Eso creo que debes hacerlo en ring0, porque hoy en día los distintos procesos no comparten la memoria sino que el SO virtualiza memoria para cada proceso. Creo que no puedes acceder a toda la memoria a no ser que trabajes a nivel ring0.

Sa1uDoS
#14
Dudas y pedidos generales / Re:Duda de kali
Junio 23, 2013, 11:45:26 AM
Teóricamente no deberías tener ningún problema, solo que no aprovecharán todos los recursos de tu PC.

Prueba y nos cuentas ;)

Sa1uDoS
#15
Antes de nada, debeis saber que ESP y EBP son punteros al stack. StackPointer(SP) y BasePointer(BP). SP apunta al tope y BP a la base.




Se utiliza antes de entrar a una función para cambiar el marco del stack.

ESP
datos
datos
EBP

Guarda en el stack el antiguo valor de EBP para luego recuperarlo. Mueve ESP a EBP de modo que no se sobreescriban los datos anteriormente guardados ;). El sub ESP, 4 "reserva" 4 bytes en el stack.

Luego, al salir de la funcion debes usar leave para que los registros tomen los valores que tenian al principio.

Sa1uDoS
#16
Me funciona perfectamente. El OllyDbg no crashea.

Sa1uDoS
#17
La primera instrucción que pongo, y el Olly no crashea...

Sa1uDoS
#18
Ingeniería Inversa / [InyectMe] Edge
Junio 16, 2013, 03:10:08 PM
Hoy les dejo un InyectMe muy sencillito, para que los nuevos practiquen un poco ;).

Deben cambiar el "Cambiame" del MessageBox por su nick, así de sencillo. Cuando lo consigan me envían un MP con una captura y les agrego al Hall Of Fame.

[Edge] InyectMe.rar (486 B)
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Sa1uDoS
#19
Off Topic / Re:una pregunta para todos
Junio 11, 2013, 04:43:13 AM
Totalmente autodidacta, estoy cursando 1º Bachiller y es la primera vez en mi vida que doy informática.

Creo que si le pone interés y tiene ciertas habilidades naturales, el que estudia será mejor que el autodidacta. Al menos en mi caso no me pongo a mirar, por poner un ejemplo, matemáticas mientras que en una carrera las dan.

Aun así conozco muchos "ingenieros" sin ninguna idea, así que todo depende. Lo que está claro es que estudiando deberías aprender más en menos tiempo. (Yo llevo 4 años en esto y no se lo mismo que DEBERÍA saber cualquier ingeniero).

Sa1uDoS
#20
Códigos Fuentes / [C] Agenda con listas enlazadas
Junio 11, 2013, 03:14:13 AM
EDITO: Sorry, Google me trolleó este código no es mío es de myguestp lo confundí con uno mío muy parecido. Todos los créditos a él.




Traigo este código como un pequeño ejemplo de listas enlazadas. Lo hice hace ya un par de años así que seguramente no lo volvería a hacer igual :P.

Código: c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ID_NAME 60
#define ID_APELLIDO1 61
#define ID_APELLIDO2 62
#define ID_TELEFONO 63


typedef struct lista
{
    char nombre[10], apellido1[10], apellido2[10], telefono[10];
    struct lista *siguiente;
}lista;

lista *primero=NULL, *ultimo=NULL;

void cls();
void pause();
void delnewline(char *array);
void additem();
void recorrer();
bool finditem(char *word, int flag);

int main()
{
    int opc, id;
    char word[10], op[10];
    lista *aux;
   
    while(opc!=4)
    {
        printf("Indica que hacer:\n\n 1.Introducir contacto\n 2.Recorrer agenda\n 3.Buscar contacto\n 4.Salir\n\n");
        scanf("%i", &opc);
        cls();
        switch(opc)
        {
            case 1:
                additem();
            break;
            case 2:
                recorrer();
                pause();
            break;
            case 3:
                printf("Indica por que criterio buscar(nombre, apellido1, apellido2 o telefono): ");
                scanf("%s", op);
                delnewline(op);
                if(strcmp(op, "nombre")==0) id=ID_NAME;
                else if(strcmp(op, "apellido1")==0) id=ID_APELLIDO1;
                else if(strcmp(op, "apellido2")==0) id=ID_APELLIDO2;
                else if(strcmp(op, "telefono")==0) id=ID_TELEFONO;
                else break;
                cls();
                printf("Indica la palabra a buscar:\n\n");
                scanf("%s", word);
                cls();
                finditem(word, id);
                pause();
            break;
            case 4:
            break;
            default:
                printf("Elije una opcion correcta");
            break;
        }
        cls();
    }
    aux=primero;
    while(aux!=NULL)
    {
        free(aux);
        aux=aux->siguiente;
    }
    return 0;
}

void cls()
{
    #ifndef WIN32
     system("clear");
    #else
     system("cls");
    #endif
}

void pause()
{
    setbuf(stdin, NULL);
    getchar();
}
void delnewline(char *array)
{
    while(*array!='\0')
    {
        if(*array=='\n')
        {
            *array='\0';
        }
        array++;
    }
}

void additem()
{
    lista *nuevo;
    nuevo=(lista*)malloc(sizeof(lista));
    printf("Introduce el nombre completo(ejemplo: Miguel Ruiz Cruz):\n\n");
    scanf("%s %s %s", nuevo->nombre, nuevo->apellido1, nuevo->apellido2);
    printf("\nIntroduce ahora el numero de telefono(9 cifras): ");
    scanf("%s", nuevo->telefono);
    cls();
    delnewline(nuevo->nombre);
    delnewline(nuevo->apellido1);
    delnewline(nuevo->apellido2);
    delnewline(nuevo->telefono);
    if(primero==NULL)
    {
        primero=(lista*)malloc(sizeof(lista));
        ultimo=(lista*)malloc(sizeof(lista));
        if(!primero || !ultimo)
        {
            printf("No se pudo reservar memoria para el item");
            return;
        }
        primero=nuevo;
        primero->siguiente=ultimo;
        ultimo=nuevo;
        ultimo->siguiente=NULL;
        return;
    }
    ultimo->siguiente=nuevo;
    ultimo=nuevo;
    ultimo->siguiente=NULL;
    return;
}

void recorrer()
{
    lista *aux;
    aux=primero;
    if(aux==NULL)
    {
        printf("Lista vacia");
        return;
    }
    while(aux!=NULL)
    {
        printf("Nombre: %s %s %s  Telefono: %s\n\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
        aux=aux->siguiente;
    }
    return;
}

bool finditem(char *word, int flag)
{
    lista *aux;
    int cont=0;
    aux=primero;
    if(aux==NULL)
    {
        return false;
    }
    if(flag==ID_NAME)
    {
        while(aux!=NULL)
        {
            if(strcmp(aux->nombre, word)==0)
            {
                printf("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
                cont++;
            }
            aux=aux->siguiente;
        }
    }
    else if(flag==ID_APELLIDO1)
    {
        while(aux!=NULL)
        {
            if(strcmp(aux->apellido1, word)==0)
            {
                printf("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
                cont++;
            }
            aux=aux->siguiente;
        }
    }
    else if(flag==ID_APELLIDO2)
    {
        while(aux!=NULL)
        {
            if(strcmp(aux->apellido2, word)==0)
            {
                printf("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
                cont++;
            }
            aux=aux->siguiente;
        }
    }
    else if(flag==ID_TELEFONO)
    {
        while(aux!=NULL)
        {
            if(strcmp(aux->telefono, word)==0)
            {
                printf("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
                cont++;
            }
            aux=aux->siguiente;
        }
    }
    if(cont==0)
    {
        printf("No se encontraron resultados");
        return false;
    }
    printf("\nSe encontraron %i resultados", cont);
    return true;
}


Sa1uDoS