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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: 1 [2]
11  Programación / ASM / Como puedo reproducir un .mp3 bajo Windows en: 27 Octubre 2014, 04:43 am
Saludos
Tengo la siguiente duda, como puedo reproducir mp3 bajo windows y que no sea usando ninguna de las api MCI (MCISendString, MCISendCommand, PlaySnd, etc).
O sea quiero hacerlo de forma nativa.

El ejemplo puede estar en cualquier lenguaje, lo importante es que sea de forma nativa sin utilizar ninguna dll o api del sistema.

Gracias de antemano.
12  Foros Generales / Sugerencias y dudas sobre el Foro / Como cierro un tema que ya este resuelto? en: 20 Octubre 2014, 06:30 am
Saludos, bueno sí quiero saber como cierro un tema para que no le pongan más comentarios?
Y tambien como puedo ver los temas que he publicado sin tener que buscarlo manualmente?
Gracias de antemano.
13  Seguridad Informática / Análisis y Diseño de Malware / Re: Como usar la pila. en: 19 Octubre 2014, 06:08 am
Saludos gracias por contestar. Lo del ring 0-3 si lo entiendo.
Mira te pondré un ejemplo y sería de mucha ayuda si me lo explicaras pondré las dudas al lado de lo que entiendo.
El ejemplo lo saque del paquete de MASM32 y se puede ensamblar tanto en POASM como en MASM también.
Todo lo que hace lo se hacer con variables y eso, pero me gustaría mucho comprender este por completo.

Ha no le hagas caso a la declaración de los datos en un solo segmento es solo un ejemplo de como gastar 1kb
Código
  1.  
  2. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  3.  
  4. comment * -------------------------------------------------------------
  5.    This example is written in pure Intel mnemonics to demonstrate that
  6.    Pelle's Macro Assembler can build code at the lowest level possible
  7.  
  8.         Build this example from the PROJECT menu with MAKEIT.BAT
  9.  
  10.    ----------------------------------------------------------------- *
  11.  
  12.    .486
  13.    .model flat, stdcall      ; 32 bit memory model
  14.    option casemap :none      ; case sensitive
  15.  
  16.    include poasm1k.inc       ; local includes for this file
  17.  
  18.  .code
  19.    szClassName db "POASM 1k", 0
  20.  
  21.  start:
  22.  
  23. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  24.  
  25.    push ebp                                ; Entiendo que mete ebp en la pila, pero si te fijas al final nunca lo saca
  26. ;a menos que leave lo haga , pero no lo se
  27.    mov ebp, esp
  28.  
  29.    sub esp, 96                             ; Aqui no entiendo porque reserva 96 bytes, sume la estructura
  30. ;mas los 4 argumentos DWORD de WndProc y da son 76
  31.  
  32.    xor edi, edi
  33.    mov esi, 400000h                        ; use constant for the hInstance
  34. ;No entiendo porque usa una constante y no obtiene el manipulador
  35. ;de instancia. Tampoco pense que funcionara así(Ya eso es de la api, esta fuera de tema).
  36.  
  37.    mov ebx, OFFSET szClassName ;Quien no entende esto :D
  38.  
  39.    push IDC_ARROW
  40.    push edi
  41.    call LoadCursor ;Entiendo las rutinas de llamada
  42.  
  43.  ; -----------------------------------
  44.  ; manually coded WNDCLASSEX structure     ;No es hermosa esta parte del código
  45.  ; ----------------------------------- ;casi poesía *.* xD
  46.  
  47.  ;Esta parte mas o menos la entiendo
  48.    mov DWORD PTR [ebp-96], 48 ;Le asigna a esa pos de memoria el tamaño de la estructura
  49.    mov DWORD PTR [ebp-92], CS_VREDRAW or CS_HREDRAW ;De aqui hacia abajo va llenando la estructura
  50.    mov DWORD PTR [ebp-88], OFFSET MyWndProc
  51.    mov DWORD PTR [ebp-84], edi
  52.    mov DWORD PTR [ebp-80], edi
  53.    mov DWORD PTR [ebp-76], esi
  54.    mov DWORD PTR [ebp-72], edi
  55.    mov DWORD PTR [ebp-68], eax
  56.    mov DWORD PTR [ebp-64], COLOR_BTNFACE+1
  57.    mov DWORD PTR [ebp-60], edi
  58.    mov DWORD PTR [ebp-56], ebx
  59.    mov DWORD PTR [ebp-52], edi
  60.  
  61.    lea eax, [ebp-96] ;Mueve a eax la dirección de la estructura
  62.    push eax
  63.    call RegisterClassEx                    ; register the window class
  64.  
  65.    mov ecx, CW_USEDEFAULT
  66.  
  67.    push edi
  68.    push esi
  69.    push edi
  70.    push edi
  71.    push edi
  72.    push ecx
  73.    push edi
  74.    push ecx
  75.    push WS_OVERLAPPEDWINDOW
  76.    push ebx
  77.    push ebx
  78.    push edi
  79.    call CreateWindowEx                     ; create the main window
  80.  
  81.    push SW_SHOWNORMAL
  82.    push eax
  83.    call ShowWindow                         ; display it
  84.  
  85.    lea ebx, [ebp-48]                       ; Carga en ebx la dirección de inicio
  86. ;de la estructura MSG
  87.  
  88.    jmp jmpin
  89.  
  90.  StartLoop:
  91.    push ebx
  92.    call DispatchMessage
  93.  jmpin:
  94.    push edi
  95.    push edi
  96.    push edi
  97.    push ebx
  98.    call GetMessage                         ; process messages until
  99.                                            ; GetMessage returns zero
  100.    test al, al
  101.    jnz StartLoop
  102.  
  103.    leave                                   ; exit the stack frame
  104.    retn                                    ; make a NEAR return
  105.  
  106. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  107.  
  108. MyWndProc:
  109.  
  110.    push ebp                                ; Otra vez lo mismo con ebp desde el principio
  111.    mov ebp, esp ; No entiendo como esp apunta a la dirección de las variables pasadas al WndProc
  112.  
  113.    cmp DWORD PTR [ebp+12], WM_DESTROY
  114.    jne @F
  115.      push NULL
  116.      call PostQuitMessage
  117.    @@:
  118.  
  119.    push DWORD PTR [ebp+20]
  120.    push DWORD PTR [ebp+16]
  121.    push DWORD PTR [ebp+12]
  122.    push DWORD PTR [ebp+8] ;Aqui no entiendo porque hWnd apunta deste 8, que hay de primero entonces
  123. ;No debería apuntar desde el byte 0
  124. ;Ha y no entiendo porque aqui es ebp+direccion y arriba es ebp-direccion
  125.    call DefWindowProc
  126.  
  127.    leave                                   ; exit the stack frame
  128.    ret 16                                  ; balance stack on exit
  129.  
  130. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  131.  
  132. end start
  133.  


Eso más que todo es las partes que no entiendo agradezco tu ayuda.
14  Seguridad Informática / Análisis y Diseño de Malware / Como usar la pila. en: 18 Octubre 2014, 09:05 am
Saludos.
Hace poco me llamo la atención el assembler, hace tiempo que vengo programando pero lenguajes de alto nivel y orientados a objetos.

Cuando comencé a programar en este lenguaje, chocaron muchos conceptos que tenía. Pero aún así comprendí la mayoría.

Aprendí a programar con MASM32 lo que me llevo a utilizar múltiples macros y otras emulaciones que tiene de alto nivel como los .if .else o declarar los procedimientos y utilizar los parámetros directamente.

Ejemplo:

Código
  1. FuncNada proc param1:DWORD, param2:DWORD
  2.    mov eax,param2
  3.    add eax,param1
  4.    ret
  5. FuncNada endp
  6.  

Me pareció excelente en el momento, pero luego de tomar un poco más de experiencia me di cuenta que no sabía que código se estaba generando y que así era una pérdida de tiempo aprender ese lenguaje. Me propuse estudiarlo a fondo a bajo nivel de verdad, entendí muchos conceptos, pero lo que aun no he terminado de entender es el manejo de la pila, si ustedes pudieran resolver mis dudas me ayudarían.

Y también sobre el direccionamiento indirecto, se como se direcciona pero siempre que trato de hacerlo el programa crashea. Necesito un ejemplo práctico porque siempre ponen:
 mov eax,byte ptr [ebp+ebx*2+4] ;ejemplo si entiendo lo de byte ptr

pero si luego trato de acceder a esa posición de memoria no puedo, y yo creí que a partir del 386 se podían direccionar 4gb de memoria.

Y sobre la pila me gustaría ver como se obtienen las variables, como se reserva espacio y como se manejan estructuras(sin identificador) osea no:
lea eax,structura
push eax

sino acceder a posiciones de memoria en donde se encuentre cada elemento.
Cualquier ayuda se los agradecería de antemano.
Y Sobretodo agradecería con ejemplos prácticos.
Gracias.

Disculpen soy nuevo y publique el tema donde no era, si alguien me ayudara a moverlo de sitio se los agradecería.
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines