Truco: Debugear binarios usando el mismo bat invisible

Iniciado por carlitos.dll, 14 Julio 2008, 23:42 PM

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

carlitos.dll

Hola acabo de leer código, y aprendido lo que muestro a continuación:

Cómo debugear binarios usando el mismo archivo y sin salida gráfica.

Ejemplo:

::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.

carlitos.dll

#1
Lo mismo, pero con el source para debugear al estilo de Shadow.


::CarlitoS
@echo off

if exist "reply.com" (goto Code) else (goto Crea)

::INICIO CODE REPLY
N REPLY.COM
e 0000 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
rcx
000E
w0
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




Por cierto, el code de reply.com lo obtuve de :
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q77457&

leogtz

Buen aporte Carlitos, tambien voy a probar ese reply.com aver hasta donde se puede llegar.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com