elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1] 2
1  Programación / Ingeniería Inversa / Ing inversa código sobre VxWorks en: 4 Julio 2018, 18:50 pm
Necesito información para sacar el código de alguna aplicación en este tipo de sistemas operativos. Más concretamente para depurar un binario de un PCC B&R. Sé que el entorno de programación utiliza gcc y gdb para la depuración. Los objetos generados son .o pero no he encontrado ningún tipo de información sobre los binarios de estos PCC (.br) y con un editor hexadecimal, en principio no se parecen a nada que haya visto en sistemas operativos convencionales.

Por lo que he leido estos sistemas operativos suelen compartir el espacio de memoria de modo que un task podría leer información del resto. Si alguien sabe algo sobre esto también me sería de ayuda.

Cualquier información que sirva para iniciarme en el funcionamiento, la programación y la depuración de binarios en este tipo de sistemas (tanto el VxWorks como la implementación del fabricante) sería muy agradecida y de mucha ayuda.

Gracias de antemano.

Sa1uDoS

EDIT: Si a alguien más le interesa el proyecto podría facilitarle binarios y un software básico, a modo de crackme para pruebas.
2  Programación / Ingeniería Inversa / [KeygenMe] Matrix en: 24 Marzo 2015, 18:46 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 :).

https://mega.co.nz/#!CBdAyZhS!nhpX7Mji2TzPJSk3JAGlSttlsxQFX-h_kVnSLa1r9Ag

SaluDoS
3  Programación / Ingeniería Inversa / [InyectMe] Edge en: 16 Junio 2013, 20: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)
https://mega.co.nz/#!HZ0hmRDK!QDgKJHCprddUBsNUEYVjQ1WM2JphG5A_V84Mqzf2SjU



Hall of Fame
  • Tincopasan
  • Flamer

Sa1uDoS
4  Programación / Ingeniería Inversa / [Crackme] Ilustrados en: 17 Abril 2013, 20:27 pm
Aqui les dejo un nuevo Crackme.

Dificultad: [3/10] ?
Objetivo: Encontrar el serial. Es un serial fijo ;).

[CRACKME] Ilustrados.exe (27 KB)

Hall of Fame
  • MCKSysArgentina
  • Flamer

Sa1uDoS
5  Programación / Programación C/C++ / [C] Funcion Split en: 28 Marzo 2013, 14:46 pm
Espero que a alguien le sirva. Yo no he visto fallos, si los encontrais, comentadlos por favor.

Código
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <string.h>
  4.  
  5. int len_palabra(char *cadena, int inicio, char separador);
  6. char **split(char *cadena, char separador);
  7.  
  8. int main()
  9. {
  10. char cadena[]="MrBlood.split.crea.funcion";
  11. int i;
  12. char **retorno=split(cadena, '.');
  13. for(i=0;retorno[i]!=NULL;i++)
  14. {
  15. printf("%s\n", retorno[i]);
  16. free(retorno[i]);
  17. }
  18. free(retorno);
  19. return 0;
  20. }
  21.  
  22. int len_palabra(char *cadena, int inicio, char separador)
  23. {
  24. int len=0, i=inicio;
  25. while(cadena[i]!=separador&&cadena[i]!='\0')
  26. {
  27. len++;
  28. i++;
  29. }
  30. return len;
  31. }
  32.  
  33. char **split(char *cadena, char separador)
  34. {
  35. int num_palabras=1, len_cadena=strlen(cadena), i, j=1, *inicios;
  36. for(i=0;i<len_cadena;i++)
  37. {
  38. if(cadena[i]==separador)
  39. {
  40. num_palabras++;
  41. }
  42. }
  43. inicios=malloc(sizeof(int)*num_palabras);
  44. inicios[0]=0;
  45. for(i=1;i<len_cadena;i++)
  46. {
  47. if(cadena[i]==separador)
  48. {
  49. inicios[j]=i+1;
  50. j++;
  51. }
  52. }
  53. char **retorno=malloc(sizeof(char *)*num_palabras+1);
  54. retorno[num_palabras]=NULL;
  55. for(i=0;i<num_palabras;i++)
  56. {
  57. j=len_palabra(cadena, inicios[i], separador);
  58. retorno[i]=(char *)malloc(sizeof(char)*j);
  59. strncpy(retorno[i], &cadena[inicios[i]], j);
  60. retorno[i][j]='\0';
  61. }
  62. free(inicios);
  63. return retorno;
  64. }
  65.  

Sa1uDoS

EDITO: Ahora se libera la memoria reservada con malloc.
6  Programación / Ingeniería Inversa / [Keygenme] Aspid en: 13 Marzo 2013, 15:04 pm
Bueno, aqui les traigo un Keygenme nuevo.

Dificultad: [3/10] Me parece a mi...
Compilador: GCC
Objetivo: Hacer un Keygen.

Los Keygen por privado por favor.

Crackme

Espero que os guste y no lo reventeis en menos de 10 min jaja.



Hall of Fame
  • MCKSys Argentina
  • tincopasan
Sa1uDoS
7  Programación / Ingeniería Inversa / [KEYGENME] Litrico v2 en: 9 Febrero 2013, 02:19 am
Bueno, digamos que he cambiado un poco el algoritmo y he complicado un poco mas que veais el codigo :P.

Como siempre, los experimentados lo tendran en 10 min, tal vez a los mas nuevos les cueste algo mas ;).

Dificultad: [3/10]
Objetivo: Hacer un pequeño Keygen en cualquier lenguaje (acepto diagramas tambien)
Lenguaje: FASM
Packer: No

Cualquiera puede animarse, como os digo esta hecho en FASM, y sin GUI por lo que el codigo es clarisimo.

[KEYGENME] Litrico v2

Sa1uDoS

P.D.: Con el overflow de la version anterior ya no se puede cambiar el mensaje.
8  Programación / Ingeniería Inversa / [Keygenme] Litrico en: 27 Enero 2013, 19:24 pm
Otro crackme.

Dificultad: [3/10] (Espero que asi sea jaja)
Lenguaje: FASM
Objetivo: Hacer un Keygen
Packer: No

[Crackme] Litrico

Espero que les guste. Para los mas desconfiados se que aqui tengo pocos mensajes, pero soy un usuario de fiar en otras comunidades. mr.blood

Sa1uDoS
9  Seguridad Informática / Análisis y Diseño de Malware / [Libreria C] Hook a la IAT en: 23 Enero 2013, 16:40 pm
Por si a alguien le ayuda. Es mejorable, no tiene ningun control de errores era solo para mostrar la idea ;).

No se si esto va en esta sección o en la de Programacion en C. Creo que esta mas relacionado con esto.

hookiat.c
Código
  1. #include "hookiat.h"
  2.  
  3. void HookIAT(char *tohooklibrary, char *tohookfunc, void *newfunc)
  4. {
  5. DWORD image_base=GetModuleHandleA(0);
  6. PIMAGE_DOS_HEADER DOS;
  7. PIMAGE_NT_HEADERS NT;
  8. PIMAGE_IMPORT_DESCRIPTOR IT;
  9. PIMAGE_IMPORT_BY_NAME *IMPORTED_FUNCTIONS;
  10. PIMAGE_THUNK_DATA Funcion;
  11. DWORD *IMPORTED_DLL_NAME;
  12. DWORD *IMPORTED_FUNCTION_NAME;
  13. unsigned int i=0;
  14.  
  15. DOS=(PIMAGE_DOS_HEADER)image_base;
  16. NT=(PIMAGE_NT_HEADERS)(DOS->e_lfanew + image_base);
  17. IT=(PIMAGE_IMPORT_DESCRIPTOR)(NT->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress + image_base);
  18. IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  19.  
  20. while( (IT->Name) != 0 )
  21. {
  22. IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  23. if(!strcmp((char *)IMPORTED_DLL_NAME, tohooklibrary))
  24. {
  25. break;
  26. }
  27. IT++;
  28. }
  29.  
  30. IMPORTED_FUNCTIONS=(PIMAGE_IMPORT_BY_NAME *)(IT->Characteristics + image_base);
  31.  
  32. for(i=0;;i++)
  33. {
  34. IMPORTED_FUNCTION_NAME=(DWORD *)((*IMPORTED_FUNCTIONS)->Name + image_base);
  35. if(((*IMPORTED_FUNCTIONS)!=0) && (!strcmp((char *)IMPORTED_FUNCTION_NAME, tohookfunc)))
  36. {
  37. break;
  38. }
  39. IMPORTED_FUNCTIONS++;
  40. }
  41.  
  42. Funcion=(PIMAGE_THUNK_DATA)(IT->FirstThunk + image_base);
  43. Funcion+=i;
  44. ORIGINAL_FUNCTION=(void *)Funcion->u1.Function;
  45. Funcion->u1.Function=(DWORD)newfunc;
  46. }
  47.  

hookiat.h
Código
  1. #include <string.h>
  2. #include <windows.h>
  3.  
  4. void *ORIGINAL_FUNCTION;
  5.  
  6. void HookIAT(char *tohooklibrary, char *tohookfunc, void *newfunc);
  7.  

Sa1uDoS
10  Programación / Programación C/C++ / [C] Buscando una funcion de la IAT en: 23 Enero 2013, 16:36 pm
Pues traigo un programa que busca X funcion en X libreria en su propia Import Address Table. No hay mucha explicacion. Esta bastante chapucero solo queria que pudieran ver un codigo sencillo que haga esto ya que yo no encontre nada estos dias.

Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7.        const char libreria[]="KERNEL32.dll";
  8.        const char funcion[]="ExitProcess";
  9.        DWORD image_base=(DWORD)GetModuleHandleA(0);
  10.        PIMAGE_DOS_HEADER DOS;
  11.        PIMAGE_NT_HEADERS NT;
  12.        PIMAGE_IMPORT_DESCRIPTOR IT;
  13.        PIMAGE_IMPORT_BY_NAME *IMPORTED_FUNCTIONS;
  14.        PIMAGE_THUNK_DATA Funcion;
  15.        DWORD *IMPORTED_DLL_NAME;
  16.        DWORD *IMPORTED_FUNCTION_NAME;
  17.        unsigned int i=0;
  18.  
  19.        DOS=(PIMAGE_DOS_HEADER)image_base;
  20.        NT=(PIMAGE_NT_HEADERS)(DOS->e_lfanew + image_base);
  21.        IT=(PIMAGE_IMPORT_DESCRIPTOR)(NT->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress + image_base);
  22.        IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  23.  
  24.        while( (IT->Name) != 0 )
  25.        {
  26.                IMPORTED_DLL_NAME=(DWORD *)(IT->Name + image_base);
  27.                if(!strcmp((char *)IMPORTED_DLL_NAME, libreria))
  28.                {
  29.                        printf("%s\n", (char *)IMPORTED_DLL_NAME);
  30.                        break;
  31.                }
  32.                IT++;
  33.        }
  34.  
  35.        IMPORTED_FUNCTIONS=(PIMAGE_IMPORT_BY_NAME *)(IT->Characteristics + image_base);
  36.  
  37.        for(i=0;;i++)
  38.        {
  39.                IMPORTED_FUNCTION_NAME=(DWORD *)((*IMPORTED_FUNCTIONS)->Name + image_base);
  40.                if(((*IMPORTED_FUNCTIONS)!=0) && (!strcmp((char *)IMPORTED_FUNCTION_NAME, funcion)))
  41.                {
  42.                        printf("\t%s\n", (char *)IMPORTED_FUNCTION_NAME);
  43.                        break;
  44.                }
  45.                IMPORTED_FUNCTIONS++;
  46.        }
  47.  
  48.        Funcion=(PIMAGE_THUNK_DATA)(IT->FirstThunk + image_base);
  49.        Funcion+=i;
  50.        printf("\t\tDireccion funcion: %p \t Addr en IT: %p\n", *Funcion, Funcion);
  51.        getchar();
  52.        return 0;
  53. }
  54.  

Sa1uDoS
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines