Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Temas - Juan

Páginas: [1] 2
1
Off Topic / Feliz Navidad!!
« en: Diciembre 21, 2015, 04:59:16 am »
Bueno pues, ahora si que sí, FELIZ NAVIDAD!!!!

Que disfruteis de los vuestros en estos dias que vendrán y intentemos ser mejores personas en este año nuevo.

saludos!!

2
Ingeniería Inversa / Memory Hacking Software
« en: Diciembre 09, 2015, 07:44:15 am »


Programa con la misma finalidad que Cheat engine:

http://memoryhacking.com/download.php

Muy bueno también.

3
Off Topic / Cuanto tiempo
« en: Diciembre 02, 2015, 04:22:17 pm »
Hola genteeee hacia muchísimo que no visitaba la red por problemas personales y de trabajo, espero tener ahora mas tiempo libre para dedicar a este gran foro.

Me alegra ver nicks conocidos todavía :)

Un saludo, mDrinky

4
Perl / [Ejercicios] Perl
« en: Noviembre 30, 2014, 05:07:46 pm »
Bueno pues, para darle más vida a esta sección, se me ha ocurrido hacer una serie de ejercicios. El primero sería hacer una pirámide en la que pides al usuario la altura de dicha pirámide y la dibujas, ej:

Introduciendo 5 en altura.

Código: [Seleccionar]
Introduce la altura del triangulo: 5
     *
    **
   ***
  ****
 *****

¡Animaros!

5
Perl / PDF de Perl
« en: Noviembre 10, 2014, 08:53:07 pm »

6
Off Topic / Cuanto tiempo...
« en: Junio 10, 2014, 07:31:19 am »
Hola gente de Underc0de, cuanto tiempo sin vernos  ::)

7
Perl / Ping
« en: Enero 19, 2014, 10:55:16 pm »
Para los que les gusta usar sus propias cosas y ver como funcionan.

Código: Perl
  1. # ping.pl por Juan fary.
  2. # Realiza ping desde perl facilmente.
  3. # modo de uso:
  4. # perl ping.pl [url=http://www.google.es]www.google.es[/url]
  5. # si queremos que haga ping infinito -> perl ping.pl [url=http://www.google.es]www.google.es[/url] -t
  6.  
  7. use v5.16;
  8. use Net::Ping;
  9. use Socket;
  10.  
  11. my $host = $ARGV[0];
  12. chomp($host);
  13.  
  14. my $_IP = gethostbyname($host);
  15. my $IP = inet_ntoa($_IP);  
  16.  
  17. my $p = Net::Ping->new("icmp",,32);
  18.  
  19. say "\nHaciendo ping a $host [$IP] con 32 bytes de datos:\n";
  20.  
  21. my $correctos = 0;
  22. my $incorrectos = 0;
  23.  
  24. my $i = 0;
  25.  
  26. while ($i < 4)
  27. {  
  28.    if ($p->ping($host,10))
  29.    {
  30.       say "Respuesta corrrecta desde $IP: bytes = 32.";
  31.       $correctos++;  
  32.    }else{
  33.       say "No se a obtenido respuesta desde $IP.";
  34.       $incorrectos++;
  35.    }
  36.    
  37.    sleep(1);
  38.    $i++ if $ARGV[1] ne "-t";
  39. }
  40.  
  41. say "\nEstadisticas de ping para $IP";
  42. say "    Paquetes: enviados = 4, recibidos = $correctos, perdidos = $incorrectos.";
  43.  
  44.  

8
Códigos Fuentes / Pasar de binario a decimal utilizando una estructura.
« en: Noviembre 14, 2013, 11:12:45 am »
Código: C
  1. /*
  2. Pasar de binario a decimal utilizando una estructura.
  3. Programado por Juan fary (mDrinky) [email protected]
  4. */
  5.  
  6. #include <stdio.h>
  7.  
  8. struct NumeroBinario
  9. {
  10.     unsigned int bit1:1;
  11.     unsigned int bit2:1;
  12.     unsigned int bit3:1;
  13.     unsigned int bit4:1;
  14.     unsigned int bit5:1;
  15.     unsigned int bit6:1;
  16.     unsigned int bit7:1;
  17.     unsigned int bit8:1;
  18. };
  19.  
  20. int main()
  21. {
  22.     struct NumeroBinario n;
  23.  
  24.     printf ("Introduce el numero: ");
  25.     scanf("%i",&n);
  26.  
  27.     printf("Numero en binario: %i",n.bit8);
  28.     printf("%i",n.bit7);
  29.     printf("%i",n.bit6);
  30.     printf("%i",n.bit5);
  31.     printf("%i",n.bit4);
  32.     printf("%i",n.bit3);
  33.     printf("%i",n.bit2);
  34.     printf("%i\n",n.bit1);
  35.  
  36.     return 0;
  37. }
  38.  

9
Presentaciones / Hola!
« en: Noviembre 13, 2013, 03:41:51 pm »
Soy mDrinky, me cambio el nick a Juan! un saludo frikis!

10
Códigos Fuentes / Resolver expresiones con pilas
« en: Noviembre 12, 2013, 08:41:11 pm »
Resuelve expresiones como 1+1+1+1 , 2*5(3+4), (5*2)+(5*3). No resolvera numeros de dos o mas caracteres, aunque modificando un poco el codigo se puede conseguir :)

un saludo!

Código: C
  1. // convierte expresion INFIJA en POSTFIJA y evalua expresiones POSTFIJAS
  2. // programado por Juan fary (mDrinky) [email protected]
  3. // compilado con MingW y Code::Blocks
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. typedef struct Dato
  10. {
  11.     char caracter;
  12.     struct Dato * Siguiente;
  13. }_Dato;
  14.  
  15. typedef _Dato * ptrDato;
  16.  
  17. void push(ptrDato * Pila,char caracter);
  18. char pop(ptrDato * Pila);
  19. int Prioridad(char Op1,char Op2);
  20. char * PostFija(char * Cadena);
  21. int Evaluar(char * Expresion);
  22.  
  23. int main()
  24. {
  25.     char * cadena = "5*3+8*5";
  26.  
  27.     char * Expresion = PostFija(cadena);
  28.  
  29.     printf("POSTFIJA: %s\n",Expresion);
  30.  
  31.     printf("Resultado de la operacion: %i",Evaluar(Expresion));
  32.  
  33.     return 0;
  34. }
  35.  
  36. int Evaluar(char * Expresion)
  37. {
  38.     ptrDato Pila = NULL;
  39.     int num1 = 0,num2 = 0,i = 0, Resultado = 0;
  40.  
  41.     while (Expresion[i] != '\0')
  42.     {
  43.         if (Expresion[i] != '*' && Expresion[i] != '/' && Expresion[i] != '+' && Expresion[i] != '-')
  44.         {
  45.             push(&Pila,Expresion[i]);
  46.         }else{
  47.             num1 = (pop(&Pila)-0x30);
  48.             num2 = (pop(&Pila)-0x30);
  49.  
  50.             switch (Expresion[i])
  51.             {
  52.                 case '*':
  53.                     Resultado = ((num1*num2));
  54.                     break;
  55.  
  56.                 case '/':
  57.                     Resultado = ((num1/num2));
  58.                     break;
  59.  
  60.                 case '+':
  61.                     Resultado = ((num1+num2));
  62.                     break;
  63.  
  64.                 case '-':
  65.                     Resultado = ((num1-num2));
  66.                     break;
  67.             }
  68.             push (&Pila,(Resultado+0x30));
  69.         }
  70.         i++;
  71.     }
  72.     return Resultado;
  73. }
  74.  
  75. char * PostFija(char * cadena)
  76. {
  77.     ptrDato Pila = NULL;
  78.     int i = 0,a = 0, Elementos = 0,Longitud = 0;
  79.     char dato;
  80.  
  81.     Longitud = strlen(cadena);
  82.  
  83.     char * buffer = (char*) malloc(Longitud);
  84.     memset(buffer,0,Longitud);
  85.  
  86.     while(cadena[i] != '\0')
  87.     {
  88.         if (cadena[i] == '(')
  89.         {
  90.             push(&Pila,cadena[i]);
  91.             Elementos += 1;
  92.         }else if (cadena[i] == ')'){
  93.             while(1)
  94.             {
  95.                 dato = pop(&Pila);
  96.                 Elementos -= 1;
  97.  
  98.                 if(dato == '(')
  99.                 {
  100.                     break;
  101.                 }else{
  102.                     buffer[a] = dato;
  103.                     a += 1;
  104.                 }
  105.             }
  106.         }else if(cadena[i] == '*' || cadena[i]  == '/' || cadena[i] == '+' || cadena[i] == '-'){
  107.             RepetirProceso:
  108.             if (Elementos == 0)
  109.             {
  110.                 push (&Pila,cadena[i]);
  111.                 Elementos += 1;
  112.             }else if(Prioridad(Pila->caracter,cadena[i]) == 1)
  113.             {
  114.                 push(&Pila,cadena[i]);
  115.                 Elementos += 1;
  116.             }else if (Pila->caracter != '('){
  117.                 dato = pop(&Pila);
  118.                 Elementos -= 1;
  119.  
  120.                 buffer[a] = dato;
  121.                 a += 1;
  122.  
  123.                 goto RepetirProceso;
  124.             }
  125.         }else{
  126.             buffer[a] = cadena[i];
  127.             a += 1;
  128.         }
  129.         i++;
  130.     }
  131.  
  132.     while(Pila != 0)
  133.     {
  134.         buffer[a] = pop(&Pila);
  135.         a += 1;
  136.     }
  137.     return buffer;
  138. }
  139.  
  140. int Prioridad(char Op1,char Op2)
  141. {
  142.         int Estado = 1;
  143.  
  144.         if (Op1 == '*' && Op2 == '-' || Op1 == '*' && Op2 == '+' || Op1 == '/' && Op2 == '-' || Op1 == '/' && Op2 == '+')
  145.         {
  146.             Estado = 0;
  147.         }
  148.  
  149.         return Estado;
  150. }
  151.  
  152. char pop(ptrDato * Pila)
  153. {
  154.     ptrDato ViejoDato;
  155.     char _caracter;
  156.  
  157.     ViejoDato = *Pila;
  158.     _caracter = (*Pila)->caracter;
  159.  
  160.     *Pila = (*Pila)->Siguiente;
  161.  
  162.     free(ViejoDato);
  163.  
  164.     return _caracter;
  165. }
  166. void push(ptrDato * Pila,char caracter)
  167. {
  168.     ptrDato NuevoDato;
  169.  
  170.     NuevoDato = (ptrDato)malloc(sizeof(_Dato));
  171.     memset(NuevoDato,0,sizeof(_Dato));
  172.  
  173.     if (NuevoDato != NULL)
  174.     {
  175.         NuevoDato->caracter = caracter;
  176.         NuevoDato->Siguiente = *Pila;
  177.  
  178.         *Pila = NuevoDato;
  179.     }
  180. }
  181.  

11
Dudas y pedidos generales / [SOLUCIONADO] Problema windows Phone 8 y Whatsapp
« en: Septiembre 28, 2013, 09:02:49 am »
Hola,

Os explico, tengo un Nokia Lumia 920 con Windows Phone 8 y quiero instalar WhatsApp pero no lo consigo. Lo instalo bien pero luego a la hora de introducir mi numero de teléfono cuando le doy a siguiente me sale un mensaje de error diciendo lo siguiente:

"No se pudo conectar con WhatsApp. Por favor confirme su configuración de red y reintente mas tarde."

Me estoy volviendo loco y no doy con la solución, a alguien le a ocurrido?

un saludo!


12
Ingeniería Inversa / Imprimir texto por consola Halo Custom Edition
« en: Julio 08, 2013, 09:15:18 am »
Basicamente es lo mismo que esto:

Código: [Seleccionar]
https://www.assembla.com/spaces/Chroalus/wiki/Halo_Engine_DrawText
Pero para otra versión del juego y es una funcion mas avanzada ya que esta tambien deja imprimir números.

Código de una DLL de ejemplo utilizando la función que he encontrado:

Código: C
  1. // Ing. Inversa por Juan fary (mDrinky)
  2. // Funciones que imprimen cadenas de texto y numero por consola
  3. // Halo Custom Edition.
  4. // VSC++ 2008
  5.  
  6. #include <windows.h>
  7.  
  8. int * cBlanco = (int*)0x005F3668;
  9. int * cVerde  = (int*)0x005F3748;
  10. int * cRojo   = (int*)0x005F5050;
  11. int * cRosa     = (int*)0x005F1010;
  12. int * cGris     = (int*)0x00000000;
  13.  
  14. DWORD Imprimir = 0x499BD0;
  15.  
  16. char * tString = "%s";
  17. char * tInt      = "%i";
  18.  
  19. char * Cadena = "hola Mundo!";
  20.  
  21. void ImprimirCadena(char * Cadena,int * Color)
  22. {
  23.    _asm
  24.    {
  25.       push Cadena
  26.       push tString
  27.       mov eax,Color
  28.       call dword ptr [Imprimir]  
  29.       add esp,0x8
  30.    }
  31. }
  32.  
  33. void ImprimirNumero(int * Numero,int * Color)
  34. {
  35.    _asm
  36.    {
  37.       push Numero
  38.       push tInt
  39.       mov eax,Color
  40.       call dword ptr [Imprimir]  
  41.       add esp,0x8
  42.    }
  43. }
  44.  
  45. BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
  46. {
  47.    if (fdwReason == DLL_PROCESS_ATTACH)
  48.    {
  49.       ImprimirCadena(Cadena,cBlanco);
  50.       ImprimirCadena(Cadena,cVerde);
  51.       ImprimirCadena(Cadena,cRosa);
  52.       ImprimirCadena(Cadena,cRojo);
  53.  
  54.       ImprimirNumero((int*)69,cGris);
  55.    }
  56.  
  57.    return TRUE;
  58. }


13
Hola, alguien sabe porque no modifica los valores el cheat engine en windows 8 de 64 bits? Busca los valores correctamente pero luego no los modifica :/

Espero respuestas rapidas, un saludo!

14
ASM / Lista procesos de forma nativa con NtQuerySystemInformation
« en: Mayo 29, 2013, 05:35:07 pm »
Código: ASM
  1. ; // Lista Procesos de forma nativa con la API  NtQuerySystemInformation
  2. ; // Escrito por Juan fary (mDrinky)
  3. ; // [email protected]
  4. ; // Ensamblador: Flat Assembler
  5.  
  6. include 'win32ax.inc'
  7. entry start
  8.  
  9. .data
  10.         Buffer                  dd 0
  11.         len                     dd 0
  12.         nBytes                  dd ?
  13.  
  14. .code
  15. start:
  16.         add [len],0x1000
  17.  
  18.         cinvoke realloc,[Buffer],[len]
  19.         mov [Buffer],eax
  20.  
  21.         invoke NtQuerySystemInformation,5,[Buffer],[len],addr nBytes
  22.  
  23.         cmp eax,0xC0000004
  24.         je start
  25.  
  26.         ListarProcesos:
  27.  
  28.         mov eax,[Buffer]
  29.         mov eax,[eax+0x3C] ; Nombre del proceso
  30.         ;mov eax,[eax+0x44]   ; ID del proceso
  31.  
  32.         test eax,eax
  33.         je SiguienteProceso
  34.  
  35.         push eax
  36.         invoke MessageBoxW,0,eax,0,0
  37.         pop eax
  38.  
  39.         mov eax,[Buffer]   ; puntero a estructura
  40.         mov eax,[eax]      ; Distancia que habria que recorrer hasta la siguiente estructura
  41.  
  42.         cmp eax,0          ; Si es 0 no hay mas estructuras
  43.         je salir
  44.  
  45.         SiguienteProceso:
  46.  
  47.         mov eax,[Buffer]
  48.  
  49.         mov edx,eax    ; Puntero a estructura en EDX
  50.         mov eax,[eax]  ; EAX =  NextEntryDelta
  51.         add edx,eax    ; Sumamos la distancia de la siguiente estructura
  52.  
  53.         mov [Buffer],edx ; Siguiente Estructura
  54.  
  55.         jmp ListarProcesos
  56.  
  57.         salir:
  58.  
  59.         ret
  60.  
  61. section '.idata' data readable import
  62.  
  63.         library msvcrt,'msvcrt.dll',\
  64.                 NTDLL,'NTDLL.DLL',\
  65.                 USER32,'USER32.DLL'
  66.  
  67.         import msvcrt,\
  68.                realloc,'realloc'
  69.  
  70.         import NTDLL,\
  71.                NtQuerySystemInformation,'NtQuerySystemInformation'
  72.  
  73.         import USER32,\
  74.                MessageBoxW,'MessageBoxW'  

Me costo crear el código ya que hay poca documentación y mucha de la que hay es erronea, asique tuve que debuguear la API en un proceso externo y ver finalmente como eran las estructuras y en que posición estaba el ID del proceso y el nombre.

un saludo!

15
Off Topic / Felicidades juan
« en: Mayo 24, 2013, 09:11:52 pm »
Felicidades juan! 19 años ya... Disfruta de la vida :)

Un saludo!

16
ASM / RunPE FASM
« en: Mayo 18, 2013, 11:53:57 am »
Nunca encontre ningún RunPE en FASM que funcionase asique al final me decidi por programarlo yo:

Código: ASM
  1. ; // RunPE
  2. ; // Programado por Juan fary (mDrinky)
  3. ; // [email protected]
  4.  
  5. format PE GUI 4.0
  6. include 'win32ax.inc'
  7. entry start
  8.  
  9. section '.data' readable writeable
  10.  
  11.         struct CONTEXT
  12.                ContextFlags             dd ?
  13.                Dr0                      dd ?
  14.                Dr1                      dd ?
  15.                Dr2                      dd ?
  16.                Dr3                      dd ?
  17.                Dr6                      dd ?
  18.                Dr7                      dd ?
  19.                FloatSave                dd ?
  20.                SegGs                    dd ?
  21.                SegFs                    dd ?
  22.                SegEs                    dd ?
  23.                SegDs                    dd ?
  24.                Edi                      dd ?
  25.                Esi                      dd ?
  26.                Ebx                      dd ?
  27.                Edx                      dd ?
  28.                Ecx                      dd ?
  29.                Eax                      dd ?
  30.                Ebp                      dd ?
  31.                Eip                      dd ?
  32.                SegCs                    dd ?
  33.                EFlags                   dd ?
  34.                Esp                      dd ?
  35.                SegSs                    dd ?
  36.                ExtendedRegisters        rb 512
  37.         ends
  38.  
  39.         calc            db 'c:\windows\system32\calc.exe',0
  40.         bleidos         dd 0
  41.         Datos           dd 0
  42.         Espacio         dd 0
  43.  
  44.         _SI                   STARTUPINFO ?
  45.         _PI                   PROCESS_INFORMATION ?
  46.         CTX                   CONTEXT ?
  47.  
  48.         Param2          dd 0
  49.  
  50.         ; Datos PE
  51.         imagebase       dd ?
  52.         sizeofheaders   dd ?
  53.         sizeofimage     dd ?
  54.         numseciones     dd ?
  55.  
  56.  
  57. section '.code' executable readable writeable
  58. start:
  59.         invoke CreateProcessA,calc,0,0,0,FALSE,CREATE_SUSPENDED,0,0,_SI,_PI
  60.  
  61.         invoke CreateFileA,calc, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0      ; nos autoleemos
  62.         mov ebx,eax
  63.         invoke GetFileSize,ebx,0
  64.         mov edi,eax
  65.         invoke GlobalAlloc,GPTR,edi
  66.         push eax
  67.         invoke ReadFile,ebx,eax,edi,addr bleidos,0
  68.         invoke CloseHandle,ebx
  69.         pop eax
  70.  
  71.         mov [Datos],eax
  72.  
  73.         cmp word[eax],'MZ'
  74.         jne salir
  75.  
  76.         add eax,dword[eax+0x3C]  ; PE
  77.  
  78.         cmp word[eax],'PE'
  79.         jne salir
  80.  
  81.         push dword[eax+0x34] ; imagebase
  82.         pop [imagebase]
  83.  
  84.         push dword[eax+0x54] ; sizeofheaders
  85.         pop [sizeofheaders]
  86.  
  87.         push dword[eax+0x50]
  88.         pop [sizeofimage]    ; sizeofimage
  89.  
  90.         movzx ebx,word[eax+0x6] ; numero de secciones
  91.         mov [numseciones],ebx
  92.  
  93.         push eax  ; guardamos ya EAX para el final
  94.  
  95.         push eax
  96.         invoke NtUnmapViewOfSection,[_PI.hProcess],[imagebase]
  97.         invoke VirtualAllocEx,[_PI.hProcess],[imagebase],[sizeofimage],0x3000, PAGE_EXECUTE_READWRITE
  98.         mov [Espacio],eax
  99.         invoke WriteProcessMemory,[_PI.hProcess],eax,[Datos],[sizeofheaders],0
  100.         pop eax
  101.  
  102.         mov ecx,0
  103.  
  104.         add eax,0xF8 ; posicionamos en las cabeceras de seccion
  105.  
  106.         EscribirSecciones:
  107.  
  108.         inc ecx
  109.  
  110.         push ecx
  111.         push eax
  112.  
  113.         mov ebx,eax
  114.         mov ebx,dword[ebx+0xC]      ; imagebase
  115.         add ebx,[imagebase]
  116.  
  117.         mov [Param2],ebx
  118.  
  119.         mov ebx,eax
  120.         mov ebx,dword[ebx+0x14]
  121.         mov edx,[Datos]
  122.         add edx,ebx
  123.  
  124.         mov ebx,eax
  125.         mov ebx,dword[ebx+0x10]
  126.  
  127.         invoke WriteProcessMemory,[_PI.hProcess],[Param2],edx,ebx,0
  128.  
  129.         pop eax
  130.         pop ecx
  131.  
  132.         add eax,0x28  ; Siguiente IMAGE_SECTION_HEADER
  133.  
  134.         cmp ecx,[numseciones]
  135.         jne EscribirSecciones
  136.  
  137.         invoke GetThreadContext,[_PI.hProcess],CTX
  138.  
  139.         invoke WriteProcessMemory,[_PI.hProcess],dword[CTX.Ebx+8],imagebase,0x4,0
  140.  
  141.         pop eax
  142.  
  143.         add eax,dword[eax+0x3C]
  144.         mov eax,dword[eax+0x28]
  145.  
  146.         mov [CTX.Eax],eax ; EntryPoint
  147.  
  148.         invoke SetThreadContext,[_PI.hProcess],CTX
  149.  
  150.         invoke ResumeThread,[_PI.hThread]
  151.  
  152.         salir:
  153.         ret
  154.  
  155. section '.idata' import data readable writeable
  156.         library NTDLL,'NTDLL.DLL',\
  157.                 KERNEL32,'KERNEL32.DLL'
  158.  
  159.         import KERNEL32,\
  160.                 CreateProcessA,'CreateProcessA',\
  161.                 CreateFileA,'CreateFileA',\
  162.                 GetFileSize,'GetFileSize',\
  163.                 GlobalAlloc,'GlobalAlloc',\
  164.                 ReadFile,'ReadFile',\
  165.                 CloseHandle,'CloseHandle',\
  166.                 VirtualAllocEx,'VirtualAllocEx',\
  167.                 WriteProcessMemory,'WriteProcessMemory',\
  168.                 GetThreadContext,'GetThreadContext',\
  169.                 SetThreadContext,'SetThreadContext',\
  170.                 ResumeThread,'ResumeThread'
  171.  
  172.         import NTDLL,NtUnmapViewOfSection,'NtUnmapViewOfSection'

un saludo!


17
ASM / Obtener dia de la semana 16 bits.
« en: Mayo 15, 2013, 11:42:15 am »
Código: ASM
  1. ; Ejemplo obtener dia de la semana.
  2. ; juan fary (mDrinky)
  3.  
  4. org 0x100
  5.  
  6. mov ah,0x2A
  7. int 21h
  8.  
  9. cmp al,0 ; Es domingo
  10. je Domingo
  11.  
  12. cmp al,1 ; es lunes
  13.  
  14. cmp al,3 ; es miercoles
  15. je Miercoles
  16.  
  17. cmp al,4 ; es jueves
  18. je Jueves
  19.  
  20. cmp al,5 ; es viernes
  21. je Viernes
  22.  
  23. cmp al,6 ; es sabado
  24. je Sabado
  25.  
  26. salir:
  27.  
  28. mov ah,0x1
  29. int 21h
  30.  
  31. mov ah,0x4C
  32. mov al,0
  33.  
  34. int 0x21
  35.  
  36. Domingo:
  37.     push textDomingo
  38.     call _print
  39.     jmp salir
  40.  
  41. Lunes:
  42.     push textLunes
  43.     call _print
  44.     jmp salir
  45.  
  46. Martes:
  47.     push textMartes
  48.     call _print
  49.     jmp salir
  50.  
  51. Miercoles:
  52.     push textMiercoles
  53.     call _print
  54.     jmp salir
  55.  
  56. Jueves:
  57.     push textJueves
  58.     call _print
  59.     jmp salir
  60.  
  61. Viernes:
  62.     push textViernes
  63.     call _print
  64.     jmp salir
  65.  
  66. Sabado:
  67.     push textSabado
  68.     call _print
  69.     jmp salir
  70.  
  71. _print:      ; Función que imprime en pantalla.
  72.     push bp
  73.     mov bp,sp
  74.  
  75.     mov ah,0x9
  76.     mov dx,word[bp+4]
  77.     int 21h
  78.  
  79.     pop bp
  80.  
  81.     ret 2
  82.  
  83. textDomingo             db 'Es Domindo$'
  84. textLunes               db 'Es Lunes$'
  85. textMartes              db 'Es Martes$'
  86. textMiercoles           db 'Es Miercoles$'
  87. textJueves              db 'Es Jueves$'
  88. textViernes             db 'Es Viernes'
  89. textSabado              db 'Es Sabado$'      

18
Off Topic / Rajoy pierde la cabeza, otro fascista locoo jajajaja
« en: Mayo 09, 2013, 09:27:17 am »

19
Off Topic / Alguien ha usado qustodian?
« en: Abril 18, 2013, 05:57:20 am »
http://es.qustodian.com/

Quiero saber si realmente me puedo ganar una propinilla con este programa...


20
ASM / ShellCode Kernel32
« en: Abril 15, 2013, 09:31:29 am »
Código: C
  1. // ShellCode que obtiene la direccion de Kernel32.DLL en el proceso
  2. // Programada por Juan fary (mDrinky)
  3. // [email protected]
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <windows.h>
  8.  
  9. char code[] = "\x31\xFF\x64\x03\x7F\x30\x8B\x7F\x0C\x8B\x7F\x1C\x8B\x3F\x8B\x57"\
  10.               "\x20\x8B\x4F\x08\x52\x51\x57\x56\xE8\x00\x00\x00\x00\x5B\x81\xEB"\
  11.               "\x1D\x10\x40\x00\x53\x59\x81\xC1\x8A\x10\x40\x00\x53\x81\xC3\x46"\
  12.               "\x10\x40\x00\x51\x52\xFF\xD3\x5B\x5E\x5F\x59\x5A\x8B\x3F\x83\xF8"\
  13.               "\x01\x75\xCB\x89\xC8\xC3\xE8\x00\x00\x00\x00\x5B\x81\xEB\x4B\x10"\
  14.               "\x40\x00\x81\xC3\x62\x10\x40\x00\x55\x89\xE5\x8B\x75\x08\x8B\x4D"\
  15.               "\x0C\x49\x41\xAC\x38\x01\x75\x0D\x3C\x00\x74\x02\xFF\xE3\x80\x39"\
  16.               "\x00\x74\x0B\x75\x00\xB8\x00\x00\x00\x00\x5D\xC2\x08\x00\xB8\x01"\
  17.               "\x00\x00\x00\x5D\xC2\x08\x00\x0A\x0D\x00\x6B\x00\x65\x00\x72\x00"\
  18.               "\x6E\x00\x65\x00\x6C\x00\x33\x00\x32\x00\x2E\x00\x64\x00\x6C\x00\x6C\x00";
  19.  
  20. int main()
  21. {
  22.         int (*func)();
  23.         func = (int (*)()) code;
  24.         printf("Kernel32 Shellcode: 0x%x\n",(int)(*func)());
  25.         printf("KernelGetModuleHandle: 0x%x\n",GetModuleHandle("KERNEL32.DLL"));
  26.         system("PAUSE");
  27.        
  28.         return 0;
  29. }
  30.  

Código: ASM
  1. ; mDrinky
  2.  
  3. format PE Console
  4.  
  5. include 'win32ax.inc'
  6. entry start
  7.  
  8. section '.text' code readable executable
  9. start:
  10. ;db 0x31,0xFF,0x64,0x03,0x7F,0x30,0x8B,0x7F,0x0C,0x8B,0x7F,0x1C,0x8B,0x3F,0x8B,0x57
  11. ;db 0x20,0x8B,0x4F,0x08,0x52,0x51,0x57,0x56,0xE8,0x00,0x00,0x00,0x00,0x5B,0x81,0xEB
  12. ;db 0x1D,0x10,0x40,0x00,0x53,0x59,0x81,0xC1,0x88,0x10,0x40,0x00,0x53,0x81,0xC3,0x44
  13. ;db 0x10,0x40,0x00,0x51,0x52,0xFF,0xD3,0x5B,0x5E,0x5F,0x59,0x5A,0x8B,0x3F,0x83,0xF8
  14. ;db 0x01,0x75,0xCB,0xC3,0xE8,0x00,0x00,0x00,0x00,0x5B,0x81,0xEB,0x49,0x10,0x40,0x00
  15. ;db 0x81,0xC3,0x60,0x10,0x40,0x00,0x55,0x89,0xE5,0x8B,0x75,0x08,0x8B,0x4D,0x0C,0x49
  16. ;db 0x41,0xAC,0x38,0x01,0x75,0x0D,0x3C,0x00,0x74,0x02,0xFF,0xE3,0x80,0x39,0x00,0x74
  17. ;db 0x0B,0x75,0x00,0xB8,0x00,0x00,0x00,0x00,0x5D,0xC2,0x08,0x00,0xB8,0x01,0x00,0x00
  18. ;db 0x00,0x5D,0xC2,0x08,0x00,0x0A,0x0D,0x00,0x6B,0x00,0x65,0x00,0x72,0x00,0x6E,0x00
  19. ;db 0x65,0x00,0x6C,0x00,0x33,0x00,0x32,0x00,0x2E,0x00,0x64,0x00,0x6C,0x00,0x6C,0x00
  20. ;db 0x00
  21.  
  22.        xor edi,edi
  23.        add edi,[fs:edi+30h]
  24.        mov edi,[edi+0ch]
  25.        mov edi,[edi+1ch]
  26.        mov edi,[edi]
  27.  
  28.        next_module:
  29.  
  30.        mov edx,[edi+0x20]
  31.        mov ecx,[edi+0x8]
  32.  
  33.        push edx
  34.        push ecx
  35.        push edi ;..
  36.        push esi ;..
  37.  
  38.        call offset1
  39.        offset1:
  40.        pop ebx
  41.        sub ebx,offset1
  42.  
  43.        push ebx
  44.        pop ecx  ; Para calcular kernel
  45.        add ecx,Kernel
  46.  
  47.        push ebx ; guardamos delta
  48.  
  49.        add ebx,CompararCadenas
  50.  
  51.        push ecx
  52.        push edx
  53.        call ebx ; Funcion comparar
  54.  
  55.        ;stdcall ebx,edx,ecx
  56.  
  57.        pop ebx  ; salvamos el delta
  58.  
  59.        pop esi ;..
  60.        pop edi ;..
  61.        pop ecx
  62.        pop edx
  63.  
  64.        mov edi,[edi]
  65.  
  66.        ;add ebx,next_module
  67.  
  68.        cmp eax,1
  69.        jne next_module
  70.  
  71.        mov eax,ecx   ; EAX = KERNEL32.DLL
  72.  
  73.  
  74.        cinvoke printf,"Mediante el PEB: %x",eax;ecx
  75.        cinvoke printf,salto
  76.  
  77.        cinvoke GetModuleHandleW,Kernel
  78.        cinvoke printf,"Mediante GetModuleHandle: %x",eax
  79.        cinvoke printf,salto
  80.  
  81.  
  82.        ret
  83.  
  84. CompararCadenas:
  85.         ; registros que usa EAX, ECX, ESI, EDI, EBX
  86.  
  87.         call offset2   ; delta offset
  88.         offset2:
  89.         pop ebx
  90.         sub ebx,offset2
  91.  
  92.         add ebx, bucle   ; delta para la etiquta bucle
  93.  
  94.         push ebp
  95.         mov ebp, esp
  96.  
  97.         mov esi,dword[ebp+8]
  98.         mov ecx,dword[ebp+12]
  99.         dec ecx
  100.         bucle:
  101.             inc ecx
  102.             lodsb
  103.             cmp byte[ecx],al
  104.             jne diferentes
  105.             cmp al,0
  106.             je comprobar
  107.             jmp ebx
  108.         comprobar:
  109.             cmp byte[ecx],0
  110.             je iguales
  111.             jne diferentes
  112.         diferentes:
  113.             mov eax,0
  114.             pop ebp
  115.             ret 8
  116.         iguales:
  117.             mov eax,1
  118.             pop ebp
  119.             ret 8
  120.  
  121.        salto              db 10,13,0
  122.        Kernel             db 0x6B,0x00,0x65,0x00,0x72,0x00,0x6E,0x00,0x65,0x00,0x6C,0x00,0x33,0x00,0x32,0x00,0x2E,0x00,0x64,0x00,0x6C,0x00,0x6C,0x00,0x00,0x00
  123.  
  124. section '.idata' import data readable writeable
  125.         library MSVCRT,'msvcrt.dll',\
  126.                 KERNEL32,'KERNEL32.DLL'
  127.  
  128.         import MSVCRT,printf,'printf'
  129.  
  130.         import KERNEL32,lstrcmpW,'lstrcmpW',\
  131.                GetModuleHandleW,'GetModuleHandleW'        

saludos.

Páginas: [1] 2