Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: FerJGS en 19 Julio 2010, 12:05 pm



Título: DEBUG (BATCH)
Publicado por: FerJGS en 19 Julio 2010, 12:05 pm
Hola, llevo ya tiempo con batch y quiero dar el siguiente paso: controlar el de debug. Aunque no es puramente MS-DOS, lo necesito para hacer juegos, manejar el ratón y crear comandos de colores y coordenadas. El problema es que no encuentro por ningún lado un tutorial decente, apenas explica un esbozo de qué hace cada letra. Lo que os pido chicos, es que me enseñéis a manejarlo completamente, que me expliquéis que hace por ejemplo E 0160, que explican qué es E, pero de hexadecimales no explican anda. Y como sois todos unos expertos estoy seguro de que podréis ayduarme, muchas gracias

PD: Quiero especializarme en BATCH primero, ¿de acuerdo? Phyton y Perl los aprenderé mas adelante.


Título: Re: DEBUG (BATCH)
Publicado por: flony en 19 Julio 2010, 20:06 pm
me anoto si alguien se juega estaria muy bueno


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 22 Julio 2010, 12:49 pm
Chicos, he visto un montón de temas de juegos en batch...tenéis que saer usar el debug, ayudadmeee


Título: Re: DEBUG (BATCH)
Publicado por: bizco en 22 Julio 2010, 13:29 pm
si le pones un ? tienes la ayuda:

Citar
assemble     A [dirección]
compare      C intervalo de direcciones
dump         D [intervalo]
enter        E dirección [lista]
fill         F lista de rango
go           G [=dirección] [direcciones]
hex          H valor1 valor2
input        I puerto
load         L [dirección] [unidad] [primer sector] [número]
move         M intervalo de direcciones
name         N [ruta] [lista de argumentos]
output       O byte de puerto
proceed      P [=dirección] [número]
quit         Q
register     R [registro]
search       S lista de rango
trace        T [=dirección] [valor]
unassemble   U [intervalo]
write        W [dirección] [unidad] [primer sector] [número]
allocate expanded memory        XA [N.páginas]
deallocate expanded memory      XD [identificador]
map expanded memory pages       XM [páginaL] [páginaP] [identificador]
display expanded memory status  XS


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 22 Julio 2010, 22:12 pm
A eso me refería exactamente. Ya sé que es caa letra, pero no sé cómo  usarlas, ni cómo funcionan. Ni nadie me explica cómo s ehace tal. Venga chicos, ayudadme.


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 27 Julio 2010, 15:10 pm
Vamos amigos, no me creo que no haya nadie que no sepa manejarlo...


Título: Re: DEBUG (BATCH)
Publicado por: flony en 28 Julio 2010, 01:31 am
http://foro.portalhacker.net/index.php/topic,87977.0.html

http://www.scribd.com/doc/7462877/Debug (http://foro.portalhacker.net/index.php/topic,87977.0.html

http://www.scribd.com/doc/7462877/Debug)
estan buenos


Título: Re: DEBUG (BATCH)
Publicado por: Ari Slash en 28 Julio 2010, 03:43 am
que hacen :huh:

el debug se usa para comandos en lenguaje ensamblador

si quieren crear juegos a bajo nivel aprendan C y su bibliotecas opengl

saludos


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 28 Julio 2010, 11:08 am
Otro igual, gracias, gracias, que ya sé lo que tengo que aprender

BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP

Quiero terminar de aprender batch. Necesito saber cómo usar el DEBUG, he visto que en el foro mucha gente ha publicado juegos y códigos interesantes usando el DEBUG. Solo quiero que me enseñen a usarlo.


Título: Re: DEBUG (BATCH)
Publicado por: DA KILLER en 28 Julio 2010, 17:31 pm
Creo que lo que nuestro compañero trata de hacer es pedir que le expliquen como usar el debug para hacer algo similar al set cursor y otros recursos, (nombro set cursosr xq en su momento renegué mucho con eso hasta que tome un code de smart genius y me use las pilas, lo postearía pero lo perdí al formatear la vez pasada (NO HICE UN BACKUP XQ NO ME AVISARON QUE IBAN A FORMATEAR)).

Si nos dices PARA QUE lo necesitas tal vez se pueda hacer de otra manera, sin recurrir a debug y/ó ASM, saludos.


Título: Re: DEBUG (BATCH)
Publicado por: leogtz en 28 Julio 2010, 20:15 pm

BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP


¿Para qué tantos lenguajes?


Título: Re: DEBUG (BATCH)
Publicado por: Ari Slash en 28 Julio 2010, 20:23 pm
si quieres aprender a hacer algun juego, debes saber para que estan orientados tales lenguajes, por ejemplo de todos los que nombrastes, solo C/C++, python y java servirian para juegos, y a lo mejor vb.net depende de como lo uses.

sabiendo batch dudo que apendas a usar ensamlador desde debug

el lenguaje ensamblador es el mas bajo nivel que hay antes del binario
y no es nada facil como los comunes lenguajes de programacion, debes saber sobre registros del procesador, posiciones de memoria etc etc, es toda una arquitectura.

el siguiente bajo nivel seria C, por eso te decia que lo aprendieras con su biblioteca opengl. Peru bueno si quieres aprender a usar el debug, esta sección de scripting no es para eso
ve al foro de asm o al de electronica


saludos


Título: Re: DEBUG (BATCH)
Publicado por: flony en 29 Julio 2010, 03:11 am
a ver gente no es para tirar leña al fuego y tampoco leo la cabeza de nadie pero lo de los lenguajes
Citar
BAT, PY, PERL, DELPHI, C, C# C++ Java JS VBN VBS PHP MySQL ASP
...se me hace q es por no mandarlo a otro lado.... :laugh: che FerJGS te di dos lugares para leer...http://www.scribd.com/doc/7462877/Debug (http://www.scribd.com/doc/7462877/Debug) me parecio el mejorcito y lo busque xq me generaste esa inquietud...y si la verdad que alguno de los chicos que saben deberia hacer un tutorial...digamolo hay comandos que hay poca info solo por citas runas debug WMIC etc y si tienen razon para debug hay q saber algo de asm...pero bue nadie creo q en su sano juicio haga un simulador de vuelo en bat y eso que es para mi, mi inicio, el bat me encanta es simple y sin tanta complicacion como otros lenguajes solo que hay "obras maestras" y decis como hizo este tipo para hacer eso en bat y quiero entender q corno dice su codigo
bue...viendo lo que hace este cristiano aca un pequeño tuto q puso
Citar
Gráficos con Debug en Batch

¿Qué es Debug?
 Debug es un debugger,  un depurador de código ensamblador para 16 bits. Windows lo incorpora por defecto y puede ser usado desde el CMD.
Ensamblador es todo un lenguaje, y obviamente por consecuencia las posibilidades de Debug son infinitas. Sin embargo en este manual se explica de forma sencilla como acceder al segmento de pantalla y poder manipular de una forma potente, sencilla y eficaz los gráficos. Útil para juegos o para darle una apariencia más profesional a los scripts.

El segmento de pantalla.

El segmento de pantalla es un pedazo de la memoria donde todas las computadoras que ejecutan DOS, almacenan sus caracteres junto con sus atributos correspondientes a la consola de comandos.
El citado segmento comienza en la dirección 0800h.
Al escribir datos directamente en un desplazamiento sobre ese segmento, esos datos aparecerán en pantalla.

Posición.

En ese segmento una posición ocupa dos bytes. El primero contiene el carácter y el segundo los atributos de éste.
Trabajando en una consola de x80y25, como es por defecto, veríamos que toda la pantalla ocupa 4000 bytes.
Bien, sabiendo que cada fila ocupa 160 bytes y cada columna ocupa 2 bytes, no es muy difícil hallar la fórmula para calcular la posición donde insertar un carácter.
La fórmula es esta: fila*160+columna*2. Lo que, adaptándolo al plano cartesiano, quedaría así: x*2+y*160. Puesto que las columnas son el eje horizontal X y las filas el eje vertical Y.
Así pues, la coordenada x1y3, por ejemplo, aplicando la fórmula, quedaría así:

1*2+3*160 = 482D = 1E2H

Se ha transformado a hexadecimal ya que es el sistema de numeración empleado en el uso de memoria.

Aplicación a Batch.

Lo que nos interesa es poder usar este sistema para realizar gráficos en batch. Vamos a ver como.

Código:

(
Echo.EB800:1E2 “Û”A
Echo.q
)|Debug>nul

En ese código hemos escrito desde Debug en la posición EB800:1E2. Hemos escrito dos bytes, que son los mencionados al comienzo de este manual: el carácter a escribir (1º byte) y su atributo (2º byte).
El carácter se encierra entre comillas, y posteriormente le sigue su atributo, que es un color en hexadecimal.
El atributo puede contener dos números hexadecimales, que corresponden al color de fondo de la coordenada en cuestión y al color del carácter, respectivamente.
Por lo tanto, al escribir en el segmento de pantalla algo así:

Código:

EB800:1E2 “A”AF


Lo que hicimos fue escribir en x1y3 la letra “A”; darle un fondo verde brillante a la casilla y un color blanco brillante a la letra.

Esto es todo, tan sólo hay que usar el ingenio para conseguir realizar gráficos más complejos y automatizar el cálculo de coordenadas hexadecimales.






Copyright © Binary_Death


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 29 Julio 2010, 12:34 pm
Gracias flony, por fin alguien que me entiende y opina igual que yo, sé de gente que en cuestión de un año ha aprendido hasta 7 lenguajes de programación y lo cierto es que tampoco me interesan tantos lenguajes pero necesito especializarme primer en batch para ir preparado al siguiente nivel. No estoy aprendiendo a programar en BATCH para hacer juegos, ¿qué consigo con eso? mover bolas en una consola, hacer como coches? Esos juegos son más cutres que los de los años 60. Yo lo que quiero es hacerlos para poner en práctica el debug y no solo juegos, también comandos como hizo "bolivianito" su famoso Colous. Y cosas relacionadas con la utilización del ratón en la consola que me vendrán muy bien. El tutorial del debug es básico pero creo que podré ir aclarándome. Gracias.


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 1 Agosto 2010, 00:22 am
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 9 Agosto 2010, 00:25 am
Hola...¿puede alguien responder a mi pregunta?


Título: Re: DEBUG (BATCH)
Publicado por: DA KILLER en 9 Agosto 2010, 03:36 am
Alex sabe de eso, a todo esto dejo una duda: ¿Que estoy haciendo mal en este code?

Código
  1. @echo off
  2. mode con cols=40 lines=20
  3. echo. ######################################
  4. echo. ####### -= PRUEBA CON DEBUG =- #######
  5. echo. ######################################
  6. echo. ######################################
  7. echo. ######################################
  8. echo. ######################################
  9. echo. ######################################
  10. echo. ######################################
  11. echo. ######################################
  12. echo. ######################################
  13. echo. ######################################
  14. echo. ######################################
  15. echo. ######################################
  16. echo. ######################################
  17. echo. ######################################
  18. echo. ######################################
  19. echo. ######################################
  20. echo. ######################################
  21. (
  22. Echo.EB800:A0 "R" 1F
  23. Echo.EB800:A2 "o" 1F
  24. Echo.EB800:A4 "d" 1F
  25. Echo.EB800:A6 "r" 1F
  26. Echo.EB800:A8 "i" 1F
  27. Echo.EB800:AA "g" 1F
  28. Echo.EB800:AC "o" 1F
  29. Echo.EB800:AE " " 1F
  30. Echo.EB800:B0 "K" 1F
  31. Echo.EB800:B2 "I" 1F
  32. Echo.EB800:B4 "L" 1F
  33. Echo.EB800:B6 "L" 1F
  34. Echo.EB800:B8 "E" 1F
  35. Echo.EB800:BA "R" 1F
  36. )|Debug>nul

En fin, lo que hace es tras la pausa escribir "Rodrigo KILLER" en formato de color F1 (letras blancas sobre azul), pero no se porque me cambia el valor de las columnas no importa el numero que ponga, a 85 que es el tamaño por default.

Me podrían echar un cable?

Desde ya gracias.

PD: Fer, busca info sobre el comando EXTERNO mouse.com o el antiguo click.com creo que era, saluDoS


Título: Re: DEBUG (BATCH)
Publicado por: SmartGenius en 9 Agosto 2010, 07:42 am
Hola...¿puede alguien responder a mi pregunta?

Podrias perfectamente usar le buscador.

http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html

Saludos.


Título: Re: DEBUG (BATCH)
Publicado por: EddyW en 9 Agosto 2010, 16:39 pm
Debug usa el valor default de las columnas 80Col, a lo que se no puedes cambiarlo ;)
Además te falto el Q de Quit en el debug:
Código
  1. @echo off
  2. mode con cols=40 lines=20
  3. echo. ######################################
  4. echo. ####### -= PRUEBA CON DEBUG =- #######
  5. For /l %%_ In (1 1 16) Do (
  6. echo. ######################################)
  7. (
  8. Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
  9. )|Debug>nul

Mejor?

SaluDOS!!!


Título: Re: DEBUG (BATCH)
Publicado por: flony en 12 Agosto 2010, 01:48 am
bue aca la pregunta que significa esta parte del code
Código:
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
o seas s q es para ingresar letras pero
1)porque EB800 y no EB799
2)porque A0 y no A1
3)1F y no F sola


Título: Re: DEBUG (BATCH)
Publicado por: kworld en 12 Agosto 2010, 07:02 am
bue aca la pregunta que significa esta parte del code
Código:
Echo.EB800:A0 "R"1F"o"1F"d"1F"r"1F"i"1F"g"1F"o"1F" "1F"K"1F"I"1F"L"1F"L"1F"E"1F"R"1F
o seas s q es para ingresar letras pero
1)porque EB800 y no EB799
2)porque A0 y no A1
3)1F y no F sola

q es para salir
1)b800 es la dirección de la memoria de vídeo.
2)La e es para ingresar (significa enter) otra alternativa es el uso de f (fill)
el número después de los dos puntos es el punto dónde comenzará a escribir en memoria, en el caso de fill el número que viene después es el límite. Si vemos la memoria cómo un vector y la pantalla cómo una matriz de dos dimensiones, podemos convertir la dirección especificada en dos dimensiones a una dimensión así:

fila * ancho + columna

con el comando mode con
podemos ver el tamaño, el número de columnas y las líneas.
por defecto es:
cols 80
lines 300

si queremos escribir en la segunda línea en el tercer carácter, y tenemos la configuración por defecto :

fila:2 (partiendo del índice 0 y avanzando de dos en dos: 0 2 4 (la segunda fila es 2 y la tercera es 4))
columna=4 (partiendo del índice 0) (0 2 4)
ancho=80 (el valor de cols en mode con)

cálculo: 2 * 80 + 4 = 164 y ahora convertido a hexadecimal: A4

Ejemplo: presionar enter dos veces.
Código:
@echo off
Color 6D

(
Echo.F B800:00 F9F "h" 4f "o" 4f "l" 4f "a" 4f
Echo.Q
) | Debug > nul

pause > nul
cls

(
Echo.E B800:A4 68 4f "o" 4f "l" 4f "a" f
Echo.Q
) | Debug > nul

pause > nul



en el ejemplo, el carácter encerrado entre comillas es para cómodidad, también podrías especificarlo en ascii hexadecimal por ejemplo reemplaza "h" por 68 y verás que es lo mismo.
En la especificación del color:
4f el primer número es el fondo del carácter y el segundo es el color del carácter, en este caso es para cambiar el color del fondo y que no tome el color negro, si especificamos solamente f toma como fondo el 0 (que es el color negro).

En este caso el color especificado es como aparece en comando color /?

Aquí tienes más información del comando debug, en este caso para reconstruir archivos binarios: http://ss64.org/viewtopic.php?pid=3152#p3152












Título: Re: DEBUG (BATCH)
Publicado por: flony en 13 Agosto 2010, 21:00 pm
gracias kworld...eso es una explicacion  ;-)....paso a copiar para tener este dato ...buena pagina y aguante herramienta de idioma de google  ;D


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 13 Agosto 2010, 22:08 pm
Tutoriales así estaba buscando yo, infinitas gracias Kwrld, es perfecto...Ahora ya estaría genial que nos explicaras igual de bien cómo hacer para establecer sistemas de coordenadas para detectar pulsaciones del ratón en un área concreta. ¿me ayudas?


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 18 Agosto 2010, 13:12 pm
¿Me explica alguien cómo hacer para establecer coordenadas en variables y detectar en ellas las pulsaciones del ratón por favor?


Título: Re: DEBUG (BATCH)
Publicado por: kworld en 19 Agosto 2010, 04:23 am
Básicamente es ejecutar la rutina con el debug, y capturar los datos con for /f Aquí tienes el código listo:

Código:
@Echo off
Setlocal Enableextensions

Call :Mouse16
Echo.C=%C% X=%X% Y=%Y%
Pause
Goto :Eof

:Mouse16
Pushd "%Temp%"
If Not Exist Mouse.Dat Call :BMouse16
For /F "Tokens=4,6,8 Delims== " %%a in (
'Type Mouse.dat ^|Debug ^| Find /i "X"'
) Do Set /a "C=0x%%a,X=0x%%b,Y=0x%%c" 2>Nul
Popd
Goto :Eof

:BMouse16
Pushd "%Temp%"
If Exist Mouse.Dat Goto :BMouse1_
Echo.>Mouse.dat
::Codigo 16 bits de Mike Jones.
For %%+ in (
"E100 B8 01 00 33 DB CD 33 B0 03 43 CD 33"
"E10C 0B DB 74 FA 91 D3 EA D3 E8 91 C3"
"G116"
"Q"
"") Do Echo.%%~+>>Mouse.dat
:BMouse1_
Popd
Goto :Eof


Nota: Si quieres un mouse pero para sistemas de 64 bits, claro que sin debug.
Código:
http://groups.google.co.uk/group/alt.msdos.batch.nt/browse_thread/thread/d15e99aec4edafec#


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 19 Agosto 2010, 10:42 am
hola kworld....he probado el código y no me funciona...pero muchas gracias por ponerlo...¿me puedes explicar su funcionamiento parte por parte, y qué es cada cosa? gracias.


Título: Re: DEBUG (BATCH)
Publicado por: kworld en 19 Agosto 2010, 18:31 pm
debería funcionar, si se queda pegado debes hacer clic.

Código:
C:\Users\Kworld\Desktop>type Mouse.dat | debug
-E100 B8 01 00 33 DB CD 33 B0 03 43 CD 33
-E10C 0B DB 74 FA 91 D3 EA D3 E8 91 C3
-G116

AX=0003  BX=0001  CX=0017  DX=0008  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1380  ES=1380  SS=1380  CS=1380  IP=0116   NV UP EI PL NZ AC PE NC
1380:0116 C3            RET
-Q

C:\Users\Kworld\Desktop>type Mouse.dat | debug | find /i "X"
AX=0003  BX=0001  CX=0017  DX=0008  SP=FFEE  BP=0000  SI=0000  DI=0000

C:\Users\Kworld\Desktop>

Luego de hacer clic se muestra los valores de los registros,  en este caso solamente nos interesan los registros BX, que será 1 si hicimos clic con el botón izquierdo, y 2 si fue con el derecho. CX es la coordenada x del cursor y DX es la coordenada y, eso es todo, lo otro es capturar la información con el for /f, y se atrapa la información anteponiedo 0x en el set /a para que no tome los números como octales ya que comienzan con 0 sino como lo que son valores hexadecimales.


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 19 Agosto 2010, 22:27 pm
No sé por qué, no me funciona, me sale la consola con el guión, como al abrir cmd y hacer @echo off&cls, justo así, una simple barra baja parpadeando.

Bien yo ya había entendido qué era AX, BX, CX, DX y eso...

¿Pero qué es  e100 B8? ¿qué es cada par hexadecimal (Qué significa)? ¿Cómo defino las áreas que quiero para los botones, con sus coordenadas, ¿cómo hago para compararlas tipo "si está entre una esquina y su opuesta?

Explícame por favor, muchas gracias.


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 22 Agosto 2010, 11:20 am
¿Me lo puede explicar alguien por favor?


Título: Re: DEBUG (BATCH)
Publicado por: [L]ord [R]NA en 22 Agosto 2010, 16:26 pm
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?

para el Debug necesitas ASM, por lo tanto que te cuesta aprender ASM de salto y todo listo


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 26 Agosto 2010, 18:40 pm
Otra cosa...¿cómo hago para que batch detecte las coordenadas del ratón con debug?

para el Debug necesitas ASM, por lo tanto que te cuesta aprender ASM de salto y todo listo

¿Qué clase de respuesta es esa Lord R.N.A? No creo que todos los que sepan hacerlo se hayan puesto con ASM... Solamente quería que me explicaran un par de cosas, ¿que qué me cuesta aprender ASM? ¿eso te parece una ayuda?

Bueno, ya me han explicado una forma de hacerlo, y me funciona casi en todas aprtes, doy gracias a todos por haberme ayudado, pero...¿podríais resolver mi duda:

http://foro.elhacker.net/scripting/batch_tomar_valor_de_una_lista-t301795.15.html

muchas gracias


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 27 Agosto 2010, 19:43 pm
Hola chicos...tengo una pequeña duda con DEBUG....

¿Se puede hacer que se ejecute una orden al pasar el ratón?

Por ejemplo, si puede detectar los clics, ¿puede detectar cuando se posa el ratón (mouse) por encima?

Algo como si

If "ratón en esata posición" (instrucciones)

¿se puede hacer?



Y otra cosa...En mouse.dat BX es el clic, CX y Dx las coordenadas...¿pero qué es todo lo demás como AX, SI etc...?

Muchas gracias por responder.


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 30 Agosto 2010, 01:26 am
¿Puede alguien responder a mi pregunta, por favor?


Título: Re: DEBUG (BATCH)
Publicado por: DA KILLER en 6 Septiembre 2010, 18:01 pm
Y si llevas tu duda al post del uso del ratón? :rolleyes:

Salu2


Título: Re: DEBUG (BATCH)
Publicado por: FerJGS en 7 Septiembre 2010, 00:42 am
¿y cual es ese post?


Título: Re: DEBUG (BATCH)
Publicado por: DA KILLER en 7 Septiembre 2010, 01:17 am
(http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html (http://foro.elhacker.net/scripting/manual_usar_mouse_en_batch-t260579.0.html)) Salu2