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 - 0xDani

#481
Ponlo aqui a ver si interesa...
#482
@crazykenny, la parte contratante de la primera parte sera considerada la parte contratante de la primera parte  ;D
#483
Cita de: avesudra en 10 Marzo 2013, 15:02 PM
Deberían ponerlo como chincheta, dado que mucha gente lo usa.

Otro +1 xD
#484
Noticias / Re: El misterioso juego de Google
10 Marzo 2013, 15:07 PM
@Puntoinfinito, en serio en mi movil funciona realmente mal, se superponen unos botones a otros y no veo nada, y busca Jimena de la Frontera en el Maps, de verdad que aqui no va a venir nadie a hackear portales ni nada  :-[
#487
Programación C/C++ / Re: Números capicúa
10 Marzo 2013, 00:51 AM
@suzy, simplemente sustituye printf's por cout's y poco mas.

@amchacon, un tip, a partir de C99 existe el tipo _Bool, no hace falta que uses un entero.
#488
Noticias / Re: El misterioso juego de Google
9 Marzo 2013, 15:48 PM
Yo tambien lo tengo, pero en mi movil no funciona muy bien y en mi pueblo de 10.000 habitantes no hay gente que juegue, ni portales ni nada.
#489
@Miky Gonzalez, es que sacar un dump de un archivo para ponerlo en una variable de C me sugirio que quizas podias estar practicando shellcoding, por eso decidi ponerte ese code, si no lo estas haciendo pues como aporte y ya esta  :P.
#490
Hace un dump hexadecimal de un archivo? No es gran cosa, si me da tiempo despues subo uno que te dumpee la sección .text de un ejecutable ELF, si no mañana  ;)

EDIT: Aqui esta, lo he hecho para 32 bits, para hacerlo portable a 64 solo hay que cambiar las estructuras del header elf.h por sus equivalentes de 64 bits.

#include <elf.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>

void hexaDump(const void *ptr, size_t mem_sz)
{
uint8_t *u8_ptr = ptr;
size_t i=0;

for(; i<mem_sz-1; i++)
{
  printf("%x, ", u8_ptr[i]);
}
printf("%x", u8_ptr[++i]);
}


int main(int argc, char **argv)
{
Elf32_Ehdr  elf_hdr;
Elf32_Shdr *elf_shdr;
Elf32_Shdr  shStrTab;

char *shStrTabData, *sectionData;

size_t i;

if(argc!=3)
{
  printf("Usage: %s <file> <section>\n", argv[0]);
  return 0;
}

FILE *fileToDump = fopen(argv[1], "r");
if(!fileToDump)
{
  printf("Could not open the file, please check the path\n");
  return 1;
}

fread(&elf_hdr, sizeof(Elf32_Ehdr), 1, fileToDump);
fseek(fileToDump, elf_hdr.e_shoff + elf_hdr.e_shentsize*elf_hdr.e_shstrndx, SEEK_SET);

fread(&shStrTab, sizeof(Elf32_Shdr), 1, fileToDump);
fseek(fileToDump, shStrTab.sh_offset, SEEK_SET);

shStrTabData = malloc(shStrTab.sh_size);

fread(shStrTabData, 1, shStrTab.sh_size, fileToDump);

elf_shdr = malloc(elf_hdr.e_shnum*sizeof(Elf32_Shdr));

fseek(fileToDump, elf_hdr.e_shoff, SEEK_SET);
fread(elf_shdr, sizeof(Elf32_Shdr), elf_hdr.e_shnum, fileToDump);

_Bool foundFlag=false;
for(i=0; i<elf_hdr.e_shnum; i++)
{
  if(!strcmp(shStrTabData+elf_shdr[i].sh_name, argv[2]))
  {
   foundFlag = true;
   break;
  } 
}

if(!foundFlag)
{
  printf("Could not find the requested section\n");
  return 2;
}

sectionData = malloc(elf_shdr[i].sh_size);
fseek(fileToDump, elf_shdr[i].sh_offset, SEEK_SET);
fread(sectionData, 1, elf_shdr[i].sh_size, fileToDump);

printf("char hexdump[] = { ");
hexaDump(sectionData, elf_shdr[i].sh_size);
printf(" }\n\n");


free(shStrTabData);
free(elf_shdr);
free(sectionData);

fclose(fileToDump);

return 0;
}