Cómo debugear binarios usando el mismo archivo y sin salida gráfica.
Ejemplo:
Código:
::CarlitoS
@echo off
if exist "reply.com" (goto Code) else (goto Crea)
::INICIO CODE REPLY
A 100
MOV AH,08
INT 21
CMP AL,0
JNZ 010A
INT 21
MOV AH,4C
INT 21
RCX
E
N REPLY.COM
W
Q
:FIN CODE REPLY
:Crea
for /f "skip=6 tokens=*" %%a in ('debug ^< "%~f0" ^>NUL') do rem
:Code
reply.com
if %errorlevel%==32 (goto :texto)
goto Code
:texto
echo Presionaste espacio
pause
Lo que hace este código es usando el for con el salto de líneas apropiado (skip) entregarle al debug el código necesario para crear el binario redireccionando a NUL.
Prefiero que analicen el code y saquen sus propias conclusiones.
Este code que escribí crea un ejecutable antiguo de Microsoft llamado reply.com que es como el pause>NUL pero en %errorlevel% nos devuelve el número de tecla presionada.
La gracia de todo esto es que se crea el binario sin salida gráfica y usando el mismo archivo.
Nota: el debug lee hasta la q y el salto de línea.