send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Obtener dia de la semana 16 bits.

  • 8 Respuestas
  • 3532 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« 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$'      

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #1 en: Mayo 15, 2013, 02:01:39 pm »
¿Por qué no usar un array de punteros? :-\
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Cygog

  • *
  • Underc0der
  • Mensajes: 67
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #2 en: Mayo 15, 2013, 02:06:30 pm »
You are not allowed to view links. Register or Login
¿Por qué no usar un array de punteros? :-\

Coincido XD

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #3 en: Mayo 15, 2013, 02:24:40 pm »
You are not allowed to view links. Register or Login
¿Por qué no usar un array de punteros? :-\

Emm, como sería lo que tu dices?


un saludo!



EDITO:

Lo pense y supongo que dices asi...

Código: ASM
  1. ; Ejemplo obtener dia de la semana.  V2.0
  2. ; juan fary (mDrinky)
  3.  
  4. org 0x100
  5.  
  6. mov ah,0x2A
  7. int 21h
  8.  
  9. xor dx,dx
  10. xor ah,ah
  11.  
  12. mov cx,2
  13. mul cx
  14.  
  15. mov bx,Dias
  16. add bx,ax
  17.  
  18. mov dx,[bx]
  19.  
  20. push dx
  21. call _print
  22.  
  23. salir:
  24.  
  25. mov ah,0x1
  26. int 21h
  27.  
  28. mov ah,0x4C
  29. mov al,0
  30.  
  31. int 0x21
  32.  
  33.  
  34. _print:      ; Función que imprime en pantalla.
  35.     push bp
  36.     mov bp,sp
  37.  
  38.     mov ah,0x9
  39.     mov dx,word[bp+4]
  40.     int 21h
  41.  
  42.     pop bp
  43.  
  44.     ret 2
  45.  
  46. Dias                    dw D1,D2,D3,D4,D5,D6,D7
  47.  
  48. D1                      db 'Es Domingo$'
  49. D2                      db 'Es Lunes$'
  50. D3                      db 'Es Martes$'
  51. D4                      db 'Es Miercoles$'
  52. D5                      db 'Es Jueves$'
  53. D6                      db 'Es Viernes'
  54. D7                      db 'Es Sabado$'    

saludos!
« Última modificación: Mayo 15, 2013, 03:00:04 pm por mDrinky »

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #4 en: Mayo 15, 2013, 03:09:45 pm »
A eso me refería pero se puede simplificar más:
Código: ASM
  1. mov ah,0x2A
  2. int 21h
  3.  
  4. mov bx, ax
  5. shl bx, 2
  6.  
  7. push [Dias + bx]
  8. call _print
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #5 en: Mayo 15, 2013, 03:12:46 pm »
Con el fragmento que as puesto no muestra correctamente el resultado  :-\

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #6 en: Mayo 15, 2013, 03:20:59 pm »
No he programado nunca para 16bits... Tal vez sea por no limpiar la parte superior de AX. Mira a ver así:
Código: ASM
  1. mov ah,0x2A
  2. int 21h
  3.  
  4. xor ah, ah
  5. mov bx, ax
  6. shl bx, 2
  7.  
  8. push [Dias + bx]
  9. call _print
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #7 en: Mayo 15, 2013, 03:44:36 pm »
Ya se porque es... al ser para 16 bits la palabra es de 2 bytes y no 4, el error esta aquí:

Código: You are not allowed to view links. Register or Login
shl bx, 2
En 32 bits estaría bien multiplicar por 4, pero para 16 tienes que multiplicar por 2.

Así funciona correctamente...

Código: ASM
  1.     mov ah,0x2A
  2.     int 21h
  3.      
  4.     xor ah, ah
  5.     mov bx, ax
  6.     shl bx, 1
  7.      
  8.     push [Dias + bx]
  9.     call _print    

un saludo!

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #8 en: Mayo 15, 2013, 04:47:39 pm »
Sí, lo copié de tu código sin pensar y no caí en que eran punteros de dos bytes :P
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

 

¿Te gustó el post? COMPARTILO!



[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs

Iniciado por Karcrack

Respuestas: 7
Vistas: 3314
Último mensaje Julio 10, 2013, 08:02:01 pm
por Karcrack
[Source] Troyano 32 Bits [ASM]

Iniciado por ProcessKill

Respuestas: 0
Vistas: 2269
Último mensaje Febrero 24, 2010, 04:02:37 pm
por ProcessKill