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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Programación General / Proyecto: Drivers de Windows (VxD, DLL Win16, *.sys, WDM...) en: 11 Marzo 2024, 17:29 pm
Ahora estoy haciendo un proyecto para descifrar, hacer totalmente a mano y llegar cargar los drivers originales de los CDs de las tarjetas por nuestra cuenta. Aquí están las listas de reproducción que he ido haciendo.

Por ahora solo puedo hacer drivers VxD y DLL simples de ejemplo de Karen Hazzah y Walter Oney aunque a mano en NASM, sin el DDK ni la versión especial de MASM, lo que me deja totalmente libre para hacer rápido drivers VxD sobre todo en NASM/FASM, aunque he hecho desde cero una versión de DISKIO.DLL de RAWWRITE para Windows 98 sin detenerse, que copia los diskettes aunque los sectores tengan errores.

DLL Win16:
https://www.youtube.com/watch?v=w3md8LIZui0&list=PLAtuuvZSlQWACwBI-LCfVOoZD_tdmtEMW

VxD (Linear Executable de 32 bits):
https://www.youtube.com/playlist?list=PLAtuuvZSlQWD2WHXXb1MsX4hhsOM7F1Gt

Código fuente de los ejemplos:
http://master.dl.sourceforge.net/project/api-simple-completa/api.zip?viasf=1
2  Programación / ASM / Libro Ensamblador 2009 de Charte Ojeda en: 14 Septiembre 2023, 02:02 am
https://www.lawebdelprogramador.com/pdf/8259-Lenguaje-ensamblador-2009.html



Este libro creo que deberían comprarlo y escanearlo bien y subirlo con un ISO de su CD-ROM para ayudar.

Tengo la foto del CD:



URL para comprarlo:
https://www.libreriacodex.com/es/libro/ensamblador-edicion-2009_49204

Creo que este libro lo han estado buscando muchos y solo lo encuentran a miles o cientos de dólares.

Pero al parecer lo venden a $39.58 comprando con Visa, MasterCard o Western Union.

Es posible que ahora que lo han publicado se acabe en unos cuantos días siendo que TANTOS lo quieren y está tan barato, a no más de $70 USD.

Por si alguien quiso comprar este, en serio siempre que lo venden se acaba en unos 3 días, no creo que vuelva a encontrarse en ningún lugar después de esto:

http://www.amazon.com/-/es/Francisco-Charte/dp/8441525110
https://www.amazon.es/-/es/Francisco-Charte/dp/8441525110

El libro tiene un poco de ejemplos extra de manejar el mouse, enlazar ensamblador y C  con Visual Studio y GCC.

MOD GLOBAL: Imagenes adaptadas al maximoi permitido



Aquí lo compré hace unos 3 días con Western Union.

Les cuento si me llega de Paraguay a Estados Unidos.

Por favor, debería alguien comprarlo y subir el escaneo a color y el CD-ROM al archive.org.
CREO QUE SOLO QUEDAN 2 LIBROS de Ensamblador 2009 a $68 en todo el mundo, de esta librería d de Paraguay. Creo que ahora que pongo el link, simplemente se va a acabar en menos de 1 semana o 1 mes.


http://pago.pagopar.com/avkh
https://www.etp.com.py/libro/programacion-ensamblador-cd-edicion-2009-67253.html#


Al parecer lo venden a $39.58 en este sitio web comprando con Visa, MasterCard o Western Union.



Solo tienen que ir en persona o contactarlos a través de no colocar datos personales y WhatsApp.

WhatsApp para comprar, pueden instalarlo en Windows 10 u 11 con una buena computadora:
no colocar datos personales

Solo mandan un link y compran con pagopar.com desde Paraguay o con Western Union.



Ya me llegó hoy en la tarde, fui a recogerlo en persona, tiene el CD nuevo y el libro está nuevo aunque es del 2009, hasta USPS hizo rastreo reconociendo el número de tracking de Paraguay:

Tiene exactamente 800 páginas.
Es mejor que tener el PDF mal escaneado sin CD-ROM que anda en Internet desde hace años, se entiende totalmente.

http://tools.usps.com/go/TrackConfirmAction?tRef=fullpage&tLc=2&text28777=&tLabels=RR003760765PY%2C

Se ve que este sitio de librería obviamente no es estafa, como el resto de pequeñas librerías con sitios en Internet, solo es de contactarse con ellos con los correos y teléfonos de WhatsApps que están en el sitio mismo:

http://www.etp.com.py/libro/programacion-ensamblador-cd-edicion-2009-67253.html#
3  Media / Juegos y Consolas / YouTube: Demostración de Castlevania Vampire's Kiss Hackeado de SNES en: 7 Mayo 2023, 17:46 pm
Hack de CyberForce que aparentemente solo funciona con ZSNES 1.31 o 1.36 para MS-DOS.
4  Programación / Programación General / Proyecto de Motor de Juegos en: 12 Abril 2023, 08:01 am
Necesito hacer un proyecto para el que tenga ayuda de varios otros para cada una de sus partes.

Se me ocurre que lo primero que tengo que hacer son las primitivas de manejo y dibujado de la pantalla, y los algoritmos básicos sin saltarse.

Así que necesito alguien que se encargue de los algoritmos de línea, de círculos, de rellenado, escalado, de color a escala de grises, doble búfer, entre otros que tengo que mencionar aquí.

Una vez eso esté listo, necesito gente que me ayude a hacer un de juegos que básicamente defina un conjunto de estructuras para cada personaje. TODO en el juego es un personaje, el fondo, la música, el suelo, etc., pero  necesito que me ayuden a definir con código y explicaciones claras.

Esos personajes simplemente se actualizan al mismo tiempo en un mismo bucle cada cierto tiempo para un escenario de juego. Unos pueden actualizarse y otros tal vez no.

He estado poniendo el código para eso en https://sourceforge.net/projects/api-simple-completa/, como todo lo demás.

También necesito que alguien defina cómo definir cada acción como saltar, correr, caerse, etc..., y explique los trucos de cómo se hace en un programa.

Necesito que todavía alguien más descifre el Game Programming Crash Course de GameDev.net.
5  Programación / Programación General / Descripción Limpia de Algoritmos y Trucos con Código en: 28 Febrero 2023, 16:09 pm
Línea de Bresenham
Código
  1. Elementos en Orden de Dibujado de Línea Bresenham |
  2. ---------------------------------------------------------
  3.    | void OPCODE__graphics__Bresenham_line(unsigned char *BresenObj)
  4.    |
  5. ----
  6.  
  7. - Elementos:
  8.  tipo de diagonal: Bresenham_line__slope
  9.  controles x y: Bresenham_line__xctrl, Bresenham_line__yctrl
  10.  largo x y: Bresenham_line__xlargo, Bresenham_line__ylargo
  11.  coordenada mayor (sin signo): Bresenham_line__maxcoord
  12.  Bresenham_line__xdireccion, Bresenham_line__ydireccion, suman 1 o -1
  13.  Bresenham_line__draw hace más eficiente per no es necesario para saber cuándo dibujar 1 pixel.
  14.  
  15.  
  16. - Tipo de diagonal (slope), horizontal 1, vertical 2,
  17.  Bresenham diagonal 0 (al final, sin chequeo).
  18.  
  19. - Controles x y y de errores de cálculo.
  20.  
  21. - largo x = xfin-xinicio (con signo).
  22.  largo y = yfin-yinicio (con signo).
  23.  El signo es para detectar si la dirección
  24.  suma o resta.
  25.  
  26. - Para x y y: Vemos si el largo es 0.
  27.  Si es 0, lo ponemos a 1.
  28.  Sino, la dirección es largo/abs(largo), es 1 o -1.
  29.  
  30. - Para x y y: Ajustar largo a abs(largo)+1
  31.  para perder el signo necesario para las
  32.  direcciones x y, y convertir el rango
  33.  de coordenadas en cuenta natural.
  34.  Parece que necesitamos sumar 1 y usar un do while
  35.  con actualización HASTA EL FINAL para cubrir
  36.  el primer y último pixel con una ÚNICA
  37.  operación de putpixel.
  38.  
  39. - Para obtener la coordenada más larga:
  40.  Si xlargo==ylargo, coordenadamayor=xlargo
  41.  Si xlargo>ylargo, coordenadamayor=xlargo
  42.  Si ylargo>xlargo, coordenadamayor=ylargo
  43.  Copiamos a coordenadamayor2 para el bucle.
  44.  
  45. - Si slope es 1, dibujar vertical, si es 2, horizontal.
  46.  Terminar.
  47.  
  48. - Esto inicializa los valores.
  49.  
  50.  
  51. do
  52. {
  53. //Esto indica el momento más óptimo
  54. //para dibujar cada pixel:
  55. ///
  56. Bresenham_line__draw=0;
  57.  
  58.  
  59. //Control de X:
  60. ///
  61.  if(Bresenham_line__xctrl)>Bresenham_line__maxcoord))
  62.  {
  63.   Bresenham_line__xctrl)-=Bresenham_line__maxcoord);
  64.   Bresenham_line__x)+=Bresenham_line__xdireccion);
  65.   Bresenham_line__draw=1;
  66.  }
  67.  
  68.  
  69. //Control de Y:
  70. ///
  71.  if(Bresenham_line__yctrl)>Bresenham_line__maxcoord))
  72.  {
  73.   Bresenham_line__yctrl)-=Bresenham_line__maxcoord);
  74.   Bresenham_line__y)+=Bresenham_line__ydireccion);
  75.   Bresenham_line__draw=1;
  76.  }
  77.  
  78.  
  79. Bresenham_line__xctrl)+=Bresenham_line__xlargo);
  80. Bresenham_line__yctrl)+=Bresenham_line__ylargo);
  81. }
  82. while(Bresenham_line__maxcoord)-=1);
  83.  


Código de la función:
Código
  1. //Estructura común de funciones gráficas
  2. //de solo calcular comunes donde las 2 primeras variables
  3. //son widewords x y y y la siguiente es el final de la
  4. //operación si es 2, o el inicio si es 0.
  5. ///
  6.  
  7. #define Bresenham_line__x       wideword_sz*0
  8. #define Bresenham_line__y       wideword_sz*1
  9. #define Bresenham_line__inited  wideword_sz*2
  10. #define Bresenham_line__slope   wideword_sz*3
  11. #define Bresenham_line__xstart  wideword_sz*4
  12. #define Bresenham_line__ystart  wideword_sz*5
  13. #define Bresenham_line__xend    wideword_sz*6
  14. #define Bresenham_line__yend    wideword_sz*7
  15. #define Bresenham_line__colorpx wideword_sz*8
  16.  
  17. #define Bresenham_line__xdireccion wideword_sz*9
  18. #define Bresenham_line__ydireccion wideword_sz*10
  19. #define Bresenham_line__xlargo     wideword_sz*11
  20. #define Bresenham_line__ylargo     wideword_sz*12
  21. #define Bresenham_line__maxcoord   wideword_sz*13
  22. #define Bresenham_line__maxcoord2  wideword_sz*14
  23. #define Bresenham_line__xctrl      wideword_sz*15
  24. #define Bresenham_line__yctrl      wideword_sz*16
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. void OPCODE__graphics__Bresenham_line(unsigned char *BresenObj)
  35. {
  36. // long xdireccion,ydireccion;            //1 o -1
  37. // long xlargo,ylargo;                    //valor absoluto de largo+1
  38. // long coordenadamayor,coordenadamayor2; //si x o y es mayor
  39. // long xctrl=0,yctrl=0;                  //controlar el pixel a dibujar excediendo la longitud de coordenadas de la línea
  40.  
  41.  
  42.  
  43. if(*(long*)(BresenObj+Bresenham_line__inited)==2)return;
  44.  
  45.  
  46. if(!(
  47.    *(long*)(BresenObj+Bresenham_line__inited)
  48.   ))
  49. {
  50.  *(long*)(BresenObj+Bresenham_line__inited)=1;
  51.  *(long*)(BresenObj+Bresenham_line__slope)=0;
  52.  
  53.  
  54.  *(long*)(BresenObj+Bresenham_line__xctrl)=0;
  55.  *(long*)(BresenObj+Bresenham_line__yctrl)=0;
  56.  
  57.  
  58.  *(long*)(BresenObj+Bresenham_line__xlargo)=*(long*)(BresenObj+Bresenham_line__xend)-*(long*)(BresenObj+Bresenham_line__xstart);
  59.  *(long*)(BresenObj+Bresenham_line__ylargo)=*(long*)(BresenObj+Bresenham_line__yend)-*(long*)(BresenObj+Bresenham_line__ystart);
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  if(*(long*)(BresenObj+Bresenham_line__xdireccion))
  67.  *(long*)(BresenObj+Bresenham_line__xdireccion)=*(long*)(BresenObj+Bresenham_line__xlargo)/myabs_long(*(long*)(BresenObj+Bresenham_line__xlargo));
  68.  else *(long*)(BresenObj+Bresenham_line__xdireccion)=1;
  69.  
  70.  if(*(long*)(BresenObj+Bresenham_line__ydireccion))
  71.  *(long*)(BresenObj+Bresenham_line__ydireccion)=*(long*)(BresenObj+Bresenham_line__xlargo)/myabs_long(*(long*)(BresenObj+Bresenham_line__ylargo));
  72.  else *(long*)(BresenObj+Bresenham_line__ydireccion)=1;
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  *(long*)(BresenObj+Bresenham_line__xlargo)=myabs_long(*(long*)(BresenObj+Bresenham_line__xlargo))+1;
  79.  *(long*)(BresenObj+Bresenham_line__ylargo)=myabs_long(*(long*)(BresenObj+Bresenham_line__ylargo))+1;
  80.  
  81.  
  82.  *(long*)(BresenObj+Bresenham_line__maxcoord)=*(long*)(BresenObj+Bresenham_line__xlargo); //si xlargo==ylargo
  83.  if(*(long*)(BresenObj+Bresenham_line__xlargo)>*(long*)(BresenObj+Bresenham_line__ylargo))*(long*)(BresenObj+Bresenham_line__maxcoord)=*(long*)(BresenObj+Bresenham_line__xlargo);
  84.  if(*(long*)(BresenObj+Bresenham_line__ylargo)>*(long*)(BresenObj+Bresenham_line__xlargo))*(long*)(BresenObj+Bresenham_line__maxcoord)=*(long*)(BresenObj+Bresenham_line__ylargo);
  85.  
  86.  *(long*)(BresenObj+Bresenham_line__maxcoord2)=*(long*)(BresenObj+Bresenham_line__maxcoord)+1;
  87.  
  88.  *(long*)(BresenObj+Bresenham_line__x)=*(long*)(BresenObj+Bresenham_line__xstart);
  89.  *(long*)(BresenObj+Bresenham_line__y)=*(long*)(BresenObj+Bresenham_line__ystart);
  90. }
  91.  
  92.  
  93. //Vertical (no Bresenham):
  94. ///
  95.  if(*(long*)(BresenObj+Bresenham_line__slope)==1 || *(long*)(BresenObj+Bresenham_line__xstart)==*(long*)(BresenObj+Bresenham_line__xend))
  96.  {
  97.   *(long*)(BresenObj+Bresenham_line__slope)=1;  //vert
  98.   if(*(long*)(BresenObj+Bresenham_line__y)==*(long*)(BresenObj+Bresenham_line__yend))
  99.   *(long*)(BresenObj+Bresenham_line__inited)=2;
  100.   else
  101.    *(long*)(BresenObj+Bresenham_line__y)+=(*(long*)(BresenObj+Bresenham_line__ydireccion));
  102.  
  103.   return;
  104.  }
  105.  
  106.  
  107.  
  108. //Horizontal (no Bresenham):
  109. ///
  110.  if(*(long*)(BresenObj+Bresenham_line__slope)==2 || *(long*)(BresenObj+Bresenham_line__ystart)==*(long*)(BresenObj+Bresenham_line__yend))
  111.  {
  112.   *(long*)(BresenObj+Bresenham_line__slope)=2;  //horiz
  113.   if(*(long*)(BresenObj+Bresenham_line__x)==*(long*)(BresenObj+Bresenham_line__xend))
  114.   *(long*)(BresenObj+Bresenham_line__inited)=2;
  115.   else
  116.    *(long*)(BresenObj+Bresenham_line__x)+=(*(long*)(BresenObj+Bresenham_line__xdireccion));
  117.  
  118.   return;
  119.  }
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126. if(*(long*)(BresenObj+Bresenham_line__xctrl)>*(long*)(BresenObj+Bresenham_line__maxcoord))
  127. {
  128.  *(long*)(BresenObj+Bresenham_line__xctrl)-=*(long*)(BresenObj+Bresenham_line__maxcoord);
  129.  *(long*)(BresenObj+Bresenham_line__x)+=*(long*)(BresenObj+Bresenham_line__xdireccion);
  130. }
  131.  
  132.  
  133. if(*(long*)(BresenObj+Bresenham_line__yctrl)>*(long*)(BresenObj+Bresenham_line__maxcoord))
  134. {
  135.  *(long*)(BresenObj+Bresenham_line__yctrl)-=*(long*)(BresenObj+Bresenham_line__maxcoord);
  136.  *(long*)(BresenObj+Bresenham_line__y)+=*(long*)(BresenObj+Bresenham_line__ydireccion);
  137. }
  138.  
  139. *(long*)(BresenObj+Bresenham_line__xctrl)+=*(long*)(BresenObj+Bresenham_line__xlargo);
  140. *(long*)(BresenObj+Bresenham_line__yctrl)+=*(long*)(BresenObj+Bresenham_line__ylargo);
  141.  
  142.  
  143. if(*(long*)(BresenObj+Bresenham_line__x)==*(long*)(BresenObj+Bresenham_line__xend) && *(long*)(BresenObj+Bresenham_line__y)==*(long*)(BresenObj+Bresenham_line__yend))
  144. *(long*)(BresenObj+Bresenham_line__inited)=2;
  145. }
  146.  







Ejemplo de uso:
Código
  1. unsigned char bresenObj0[wideword_sz*17];
  2. *(long*)(bresenObj0+Bresenham_line__inited)=0;
  3. *(long*)(bresenObj0+Bresenham_line__xstart)=0;
  4. *(long*)(bresenObj0+Bresenham_line__ystart)=0;
  5. *(long*)(bresenObj0+Bresenham_line__xend)=319;
  6. *(long*)(bresenObj0+Bresenham_line__yend)=199;
  7.  
  8. while(1)
  9. {
  10.  OPCODE__graphics__Bresenham_line(bresenObj0);
  11.  putpixel(*(long*)(bresenObj0+Bresenham_line__x), *(long*)(bresenObj0+Bresenham_line__y), 6);
  12.  if(*(long*)(bresenObj0+Bresenham_line__inited)==2)break;
  13. }
  14.  
6  Programación / ASM / Drivers VxD en: 19 Diciembre 2022, 23:33 pm
Esta es la información que he encontrado hasta ahora para hacer drivers VxD de Win9x fácil. Los VxDs pueden ser útiles para cargar drivers o emularlos en computadoras viejas o Bochs y así hacer programas con más recursos de hardware no estándar al cargar las VxDs por nuestra cuenta.

Los archivos VxD supestamente siempre son archivos con la marca "LE" en vez de "LX".

De la cabecera LE EXE:

MemPagesCtr es la cuenta de bloques de tamaño MemPageSZ en disco, que hasta ahora puedo dejar a 512 bytes de tamaño.

LastPageBytes dice cuántos bytes tiene el último bloque en el archivo, que puede ser menor o tal vez igual que MemPageSZ.

En el código, los servicios VxD se llaman con INT 20H, seguido de 4 bytes que tienen códigos de los servicios a llamar. Windows mismo se encarga de saltarse esos 4 bytes después de la instrucción INT para evitar errores de ejecución con esos bytes de opcode inválidos.

Esqueleto simple en NASM que muestra un MessageBox al abrir o cerrar una ventana de consola de MS-DOS:
Código:
;http://master.dl.sourceforge.net/project/api-simple-completa/api.7z?viasf=1

%include "../../../PC/BIOS/WinAPI/EXE/PE/snippets/DOS_Stubs/NASM/DOS_Stub_classic0xB0.asm"

PE_header:
LE_header:
LE_header_start:

  LE_header_0x00_Signature            db 'LE'
  LE_header_0x02_ByteOrder            db 0 ;0 Little or Big Endian
  LE_header_0x03_WordOrder            db 0 ;0 Little or Big Endian
  LE_header_0x04_FormatLevel          dd 0
  LE_header_0x08_CPUType              dw 2 ;1 286+, 2 386+, 3 486+, 4 586+, 20h i860 N10+, 21h N11+, 40h MIPS Mark I+ (R2000, R3000), 41h MIPS Mark II+ (R6000), 42h MIPS Mark III+ (R4000)
  LE_header_0x0A_TargetOS             dw 4 ;1 OS/2, 2 Win16, 3 DOS 4x, 4 Win386
  LE_header_0x0C_ModuleVersion        dd 0
  LE_header_0x10_Flags                dd 101000000000000000b ;
  LE_header_0x14_MemPagesCtr          dd 3
  LE_header_0x18_InitialCS            dd 0
  LE_header_0x1C_InitialEIP           dd 0  ;Explicar cómo encuentra y carga las secciones y direcciones de código y datos el VxD
  LE_header_0x20_InitialSS            dd 0
  LE_header_0x24_InitialESP           dd 0
  LE_header_0x28_MemPageSZ            dd 512   ;Tamaño de datos
  LE_header_0x2C_LastPageBytes        dd 0x31
  LE_header_0x30_FixUpSectionSZ       dd 0x85
  LE_header_0x34_FixUpSectionCheck    dd 0
  LE_header_0x38_LdrSectionSZ         dd 0x69
  LE_header_0x3C_LdrSectionCheck      dd 0
  LE_header_0x40_ObjectTableOffset    dd 0xC4  ;from where?
  LE_header_0x44_ObjectTableEntries   dd 3
  LE_header_0x48_ObjectPageMapOffset  dd 0x10C
  LE_header_0x4C_ObjectIterDataMapOff dd 0  ;always 0 for VxD?
  LE_header_0x50_RsrcTableOffset      dd 0
  LE_header_0x54_RsrcTableEntries     dd 0
  LE_header_0x58_ResidentTableOffset  dd 0x118
  LE_header_0x5C_EntryTableOffset     dd 0x123
  LE_header_0x60_ModulDirectivesTable dd 0  ;always 0 for VxD?
  LE_header_0x64_ModulDirectivesEnts  dd 0
  LE_header_0x68_FixupPageTblOffset   dd 0x12D
  LE_header_0x6C_FixupRecordTable     dd 0x13D
  LE_header_0x70_ImportModulesTable   dd 0x1B2
  LE_header_0x74_ImportModulesCount   dd 0
  LE_header_0x78_ImportProcTable      dd 0x1B2
  LE_header_0x7C_PerPageChecksums     dd 0
  LE_header_0x80_DataPagesOffset      dd 0x400   ;0x1000; 0x400;0x2E0;0x1000  ;inicio de código y datos después de la cabecera
  LE_header_0x84_PreloadPageCount     dd 1
  LE_header_0x88_NonResidentNames     dd 0x1434
  LE_header_0x8c_NonResidentNamesLen8 dd 15  ;in bytes
  LE_header_0x90_NonResidentNamesChk  dd 0
  LE_header_0x94_AutomaticDataObject  dd 0
  LE_header_0x98_DebugInformationOff  dd 0
  LE_header_0x9C_DebugInformationLen  dd 0
  LE_header_0xA0_PreloadInstPagesNum  dd 0
  LE_header_0xA4_DemandInstancePgsNum dd 0
  LE_header_0xA8_ExtraHeapAllocation  dd 0
  LE_header_0xAC                      dd 0

;File Offset 0x160, LE header offset 0xB0


;INIT:
;INIT:
;INIT:
;INIT:



times 16 db 0

dd 0x4000000
dd 0xE8
dd 0
dd 0x2045

dd 1
dd 1
db "LCOD'",0,0,0

dd 0
dd 0x2005
dd 2
dd 1
db "PCOD1",0,0,0
dd 0
dd 0x2023

dd 3
dd 1
db "PDAT"
dd 0x10000

db 0,0,2,0
db 0,0,3,0
db 7
db "MESSAGE"

db 0,0,0,1,3,1,0,3,0,0,0,0,0,0,0,0
db 0,0x60,0,0,0,0x75,0,0,0,0x75,0,0,0,7,0,0xE1
db 0,2,0x20,0,0x27,0,0x1F,1,0x5F,0,0x65,0,0x69,0,0x6D,0
db 0x71,0,0x75,0,0x79,0,0x7D,0,0x81,0,0x85,0,0x89,0,0x8D,0
db 0x91,0,0x95,0,0x99,0,0x9D,0,0xA1,0,0xA5,0,0xA9,0,0xAD,0
db 0xB1,0,0xB5,0,0xB9,0,0xBD,0,0xC1,0,0xC5,0,0xC9,0,0xCD,0
db 0xD1,0,0xD5,0,0xD9,0,0xDD,0,7,0,0x61,0,2,0,0,7
db 0,0x5B,0,1,0x61,0,7,0,0x18,0,1,0x50,0,7,0,0x21
db 0,3,0x1F,0,7,0,0x11,0,3,0,0,7,0,1,0,3
db 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,32,32,32,32

db "MESSAGE_DDB",0,32,0X40,0X31,0
db 32,32,32,"CLASS",0,"'RCODE",0
db 0,0,32,32,32,"PRELOAD DISCARDABLE",0,0
db "CONFORMING",0,0,0,0,0,0,0,0,0,0,0,0


;times 0xD20 db 0


;align 0x1000
align 0x400



;END:  
;END:  
;END:  
;END:  


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;0x1000 en el archivo tiene .00000000
;de base en HIEW, por qué?
;;


;INIT: Page 0
;INIT: Page 0
;INIT: Page 0
;INIT: Page 0

db 0,0,0,0,0,4,0,0,1,0,0,0,"MESSAGE"
db 32,0,0,0,0x80,0,0,0,0,0,0,0,0
times 16 db 0
dd 0,0,0
db "verPP",0,0,0
db "1vsR2vsR3vsR",0x83,0xE8,7,0x83,0xF8,0x21,0x73,7,-1,0x24,0x85,0,0,0,0,0xF8
db 0xC3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

times 16*7 db 0

db 0,0,0,0,0,0xCC,0xCC,0xCC,0,0,0,0,0,0,0,0

;times 16*17 db 0

%define round(n, r) (((n+(r-1))/r)*r)
align 512


;END:  Page 0
;END:  Page 0
;END:  Page 0
;END:  Page 0



;align 512
;_s:
;times (512-_s) db 0

;dd round(_s,512)
;times (512-$$) db 0




;INIT: Page 1
;INIT: Page 1
;INIT: Page 1
;INIT: Page 1


bits 32

mov ecx,0   ;xor ecx,ecx
;xor ecx,ecx
db 0xCD,0x20,3,0,1,0 ;VMMcall Get_Sys_VM_Handle
mov eax,0x30
mov edi,0
xor esi,esi
xor edx,edx
;db 0xCD,0x20,4,0,17,0  ;VxDcall VMCPD.Set_CR0_State  ;17 en vez de 0x17, probar valores WORD o DWORD
db 0xCD,0x20,4,0,0x17,0  ;VxDcall SHELL.Message

ret
mov ecx,0
db 0xEB,0xDE  ;jmps .5


;times 9 db 0


;times 16*29 db 0

align 512



;END:  Page 1
;END:  Page 1
;END:  Page 1
;END:  Page 1





;INIT: Page 2
;INIT: Page 2
;INIT: Page 2
;INIT: Page 2


db "VxD MessageBox",0
db "A VM is created",0
db "A VM is destroyed",0
;db "SEC",0x0B
;db "MESSAGE_DDB",0,0,0



;END:  Page 2
;END:  Page 2
;END:  Page 2
;END:  Page 2

7  Programación / Programación General / Canal de Youtube con Programación En Vivo en: 23 Noviembre 2022, 15:36 pm
http://www.youtube.com/user/AltComp126/streams

El stream en vivo de este canal muestra cómo compilar el código de la API y programas de bajo nivel que están en http://master.dl.sourceforge.net/project/api-simple-completa/api.7z?viasf=1 o http://sourceforge.net/projects/api-simple-completa/files/

La programación parte de DJGPP, NASM, conceptos de sistemas operativos y hardware, y la compilación de los diferentes programas existentes con las herramientas que se necesiten..



Bochs, VirtualBox, bootear desde discos USB y MS-DOS puro, DJGPP, sistemas operativos propios
8  Programación / Desarrollo Web / Hacer mirror de Galeon.com (dice que cierra el 31 de enero del 2020) en: 30 Enero 2020, 16:14 pm
Cuando uno va a varios sitios de Galeon.com, como

http://kerneli386.galeon.com

Sale un anuncio que dice que las páginas se perderán
después del 31 de enero de este año.

¿Cómo se podría hacer una lista de los sitios más importantes de Galeon.com, de favoritos y otros orígenes para hacer un mirror, tal vez entre todos, antes de que supuestamente desaparezca?
9  Programación / ASM / Libro de Ensamblador 2005 de Francisco Charte Ojeda en: 31 Enero 2017, 23:41 pm




Extracto de audio automatizado de 18 horas del libro entero (para estudiarlo más fácil mientras hacemos otra cosa u evaluar si contiene trucos que nos pueden servir y podemos entender fácilmente al oírlos):
http://archive.org/download/LibroEnsambladorCharte_2005_2009/ExtractoAudioLibroEnsamblador2005Charte.mp3




http://archive.org/download/LibroEnsambladorCharte_2005_2009/LibroEnsamblador2005CharteOjeda.zip

http://archive.org/download/LibroEnsambladorCharte_2005_2009/Ensamblador_Charte_CD_2005.zip

http://archive.org/download/LibroEnsambladorCharte_2005_2009/ExtractoTextoLibroEnsamblador2005CharteOjeda.zip



Citar
El libro de Ensamblador de Francisco Charte Ojeda, en su versión 2005 o 2009, es un importantísimo libro que enseña a programar en Ensamblador x86 para las PCs de 16 y 32 bits.

Es tal vez el mejor y más claro libro sobre Ensamblador en Español.

Sin embargo, lastimosamente ya no se encuentra a la venta desde hace varios años, por lo que los nuevos programadores de habla española/latinoamericana no podrían disfrutar del beneficio de aprender Ensamblador. Yo traté de comprarlo allá por el 2011 en Amazon pero jamás me lo enviaron ya que para comenzar también se había acabado en bodega. Se podía comprar y lo enviarían cuando lo encontraran, pero jamás me lo enviaron, y pagué unos 49 dólares por él en Amazon, aunque no sé si me los cobraron o no. Lo más probable es que no, pero ya no está disponible para comprarse.

Si bien solo habla de los modos de 16 y 32 bits, nos servirá de excelente base, si también lo complementamos junto con los diferentes manuales de Intel y de algoritmos, formatos de archivo y llamadas de sistema para cada sistema operativo.

Todos estos factores hacen que sea más difícil aprender a programar en Ensamblador para quienes hablamos Español, a menos que contemos con este libro, realmente el mejor sobre el tema que por lo menos yo he podido ver, escrito en Español, y de una manera que realmente simplifica los conceptos básicos de la programación en ese lenguaje, como si de una clase se tratara.
10  Programación / ASM / Manual de Programación del BIOS, Volumen 1 de 3 en: 8 Enero 2017, 01:31 am


Link de descarga del manual (384 páginas, 100 Megabytes de JPG):
http://archive.org/download/Phoenix_PC_BIOS_Books/1_System%20BIOS%20PC%20and%20EISA%202ndEd.zip

Con este libro aprenderemos a programar el BIOS base de todas las PC estándar. Necesitamos saber llamar a las funciones del BIOS con ensamblador de NASM, TASM o MASM, con Turbo C++ o con inline assembly de los diferentes compiladores. Es una adición importante a referencias como la de Ralf Brown ya que muestra cada campo y servicio del BIOS base de forma limpia, proveniente de un fabricante principal de BIOS (Phoenix).

Este video contiene la vista previa del video y el audio del texto completo (fue procesado a computadora con OCR de Lucion File Converter y leído a MP3 con Balabolka así que se oye exactamente lo que la computadora interpretó).

El video está pensado para poder oír cada detalle que el libro contiene y así decidir si hay información especial de interés, haciendo un esfuerzo mínimo para leerlo.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines