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]
11  Programación / Scripting / Truco: Debugear binarios usando el mismo bat invisible en: 14 Julio 2008, 23:42 pm
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:
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.
12  Programación / Scripting / Aumentar 2 horas el tiempo en: 12 Julio 2008, 00:26 am
No sé dónde quedó un post de alguien que pedía ayuda para quitar dos horas al tiempo.

Bueno, a lo mejor esto le sirve:

Código:
::CarlitoS.dll

@echo off

set /a n=-2
::n es la cantidad de horas que quieres aumentar-quitar. Para aumentar antepones el signo +, y para restar antepones el signo -

for /f "delims=:" %%a in ('echo %time%') do call :newtime %%a
goto :eof

:newtime
set /a hra=%1+%n%
if %hra% LSS 0 (set /a hra=%hra%+24) else if %hra% GEQ 24 (set /a hra=%hra%-24)
time %hra%:%time:~3%
goto :eof


13  Programación / Scripting / Detector Unidades Removibles 5.0c en: 10 Julio 2008, 06:45 am
Código:

::DETECTOR OF REMOVABLE DEVICES [V5.0c Final] author CarlitoS.dll
::carlitosdll.blogspot.com
::Tested in Windows 2000 and XP. Not works in Windows 98 and Me.

@echo off
if "%errorlevel%"=="" goto other

echo Mounted removable devices detected
echo ----------------------------------

ver | findstr "2000 NT" >NUL && goto NT2000

:XPVISTASEVEN
for /f "tokens=3 delims=\:" %%a in ('reg query HKLM\SYSTEM\MountedDevices ^| find "530054004F00520041"') do (
dir /a %%a:\ >NUL 2>&1 && echo.%%a:)
pause
goto :eof

:NT2000
regedit /e "%temp%\devices.dat" "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"
for /f "tokens=3 delims=\:" %%a in ('find /i "DosDevices" ^< "%temp%\devices.dat" ^| find /i "53,00,54,00,4f,00,52,00,41"') do (
dir /a %%a:\ >NUL 2>&1 && echo.%%a:)
del /f /q "%temp%\devices.dat" >NUL
pause
goto :eof

:other
echo Current batch is not supported in this Operating System version.
exit

14  Programación / Scripting / Otro uso de call en: 10 Julio 2008, 02:23 am
Publico otro uso de call, que estoy aprendiendo

Esto es lo que llevo:

Código:

@echo off


:: Lo que sería:
:: set word=%word:%letra1%=%letra3%%
::
:: Ejemplo:
::
::     set word=%word:%letra1%=%letra3%%
::
::                    %word:%letra1%=%letra3%%
::call set  word =  [%] %word:%letra1%=%letra3%% [%]
:: se añade un % al principio y otro al final %
::
:: Finalmente queda:
::
::call set word=%%word:%letra1%=%letra3%%%


set letra1=ra
set letra2=ma
set letra3=ca
set letra4=sa

set word=rama


echo %word%
::muestra rama

call set word=%%word:%letra1%=%letra3%%%
call set word=%%word:%letra2%=%letra4%%%

echo %word%
::muestra casa

pause

set inicio=1
set fin=1

echo %word%

call echo %%word:~%inicio%,%fin%%%
::muestra a

echo %word%
::muestra casa

set inicio=2
set fin=3


call set word=%%word:~%inicio%,%fin%%%
echo %word%
::muestra sa

pause

15  Programación / Scripting / Crackme in batch en: 6 Julio 2008, 13:23 pm
Dejo un crackme en batch.
para que se entretengan.

Código:
http://wikisend.com/download/490408/crackme.exe

¿haber si alguien se anima y publica más?

16  Programación / Scripting / Detector unidades Pendrive 5.0c en: 30 Junio 2008, 03:49 am
En la siguiente página está la versión 3.4 que es mucho mejor.

Hola, quisiera solicitar un favor, escribí un code para detectar las unidades pendrive. Y quisiera pedirles por favor, que lo probaran y me dijeran cómo funciona, si es posible, colocar dos pendrives (porque yo tengo sólo 1), para saber si funciona en varias eventos.
17  Programación / Scripting / BINARIO a BATCH en: 28 Junio 2008, 04:42 am
Fanático de la portabilidad, y muy contento con el método de Shadow para convertir de binario a batch, me puse a buscar algún código que hicera lo mismo que el programa de Shadow, y descubrí uno hecho en pascal (nunca había leído pascal  :D), y lo compilé y no trabajaba bien, así es que lo arreglé con lo nada que sé de pascal, y mirando los resultados del programa de Shadow. El único problema que tiene es que con archivos grandes, no informa que son grandes, sino que se cae al ejecutarlo. Me comprometo a hacer lo mismo en C en un tiempo más.

Bueno, este es el código (modificado). Lo compilé con Free Pascal.

debugbat.pas
Código
  1.  
  2. (*************************************************************************
  3.  
  4.              ===============================================
  5.              Hex-encode binary files in debug-script batches
  6.              ===============================================
  7.                  Copyright (c) 1993,1994 by Jos‚ Campione
  8.                    Ottawa-Orleans Personal Systems Group
  9.                           Fidonet: 1:163/513.3
  10.  
  11.         This program reads a binary file and creates a hex-encoded
  12.         text file. Will use debug.exe or debug.com to
  13.         reconstruct the binary file.
  14.  
  15. **************************************************************************)
  16. {$M 2048,0,0}
  17. program debugbat;
  18.  
  19. uses crt,dos;
  20.  
  21. const
  22.  maxsize = $FFFF;
  23.  
  24. type
  25.  string2 = string[2];
  26.  
  27. var
  28.  ifile : file of byte;
  29.  ofile : text;
  30.  n : word;
  31.  s : word;
  32.  b : byte;
  33.  fsize : word;
  34.  dir : dirstr;
  35.  nam : namestr;
  36.  ext : extstr;
  37.  filename : string[48];
  38.  i : integer;
  39.  
  40. function b2x(b: byte): string2;
  41. const hexdigit: array[0..15] of char = '0123456789ABCDEF';
  42. begin
  43.  b2x:= hexdigit[b shr 4] + hexdigit[b and $0F];
  44. end;
  45.  
  46. procedure myhalt(e: byte);
  47. begin
  48.  gotoxy(1,wherey);
  49.  case e of
  50.    0 : writeln('done.');
  51.    1 : writeln('error in command line.');
  52.    2 : writeln('file exceeds the 65K limit.');
  53.    else begin
  54.      e:= 255;
  55.      writeln('Unknown error.');
  56.    end;
  57.  end;
  58.  halt(e);
  59. end;
  60.  
  61. begin
  62.  writeln;
  63.  writeln('DEBUGBAT v.1.0 Copyright (c) Feb/93 by J. Campione.');
  64.  writeln('Modify by ...');
  65.  write('Wait... ');
  66.  n := 0;
  67.  s := $00;
  68.  {$I-}
  69.  assign(ifile,paramstr(1));
  70.  reset(ifile);
  71.  {$I+}
  72.  if (paramcount <> 1) or (ioresult <> 0) or (paramstr(1) = '') then myhalt(1);
  73.  fsplit(paramstr(1),dir,nam,ext);
  74.  for i:= 1 to length(ext) do ext[i]:= upcase(ext[i]);
  75.  if ext = '.EXE' then filename:= nam + '.ext'
  76.                  else filename:= nam + ext;
  77.  fsize:= filesize(ifile);
  78.  if fsize > maxsize then myhalt(2);
  79.  assign(ofile, nam + '.src');
  80.  rewrite(ofile);
  81.  writeln(ofile,'N ',filename);
  82.  while not eof(ifile) do begin
  83.    n:= n + 1;
  84.    read(ifile,b);
  85.    if n mod 16 = 1 then begin
  86.      writeln(ofile);
  87.      write(ofile,'e ',b2x(hi(s)),b2x(lo(s)));
  88.      s := s + 16;
  89.    end;
  90.    write(ofile,' ',b2x(b));
  91.  end;
  92.  writeln(ofile);
  93.  writeln(ofile,'rcx');
  94.  writeln(ofile,b2x(hi(n)),b2x(lo(n)));
  95.  writeln(ofile,'w0');
  96.  writeln(ofile,'q');
  97.  close(ifile);
  98.  close(ofile);
  99.  myhalt(0);
  100. end.
  101.  
  102.  


Se ejecuta así:

debugbat archivo

Luego, solo se toma el archivo resultante .src, y se hace en consola o desde un bat:

debug.exe < archivo.src

o

type archivo.src | debug.exe


Los archivos .exe se crearán como .ext (ya que sino debug arroja error)

Sugerencia obvia: Comprimir antes el ejecutable con upx. Revisar resultados, por ejemplo con fc.exe o comp.exe
18  Programación / Scripting / Cómo mezclar BATCH + REG en: 27 Junio 2008, 04:00 am
Cómo mezclar código REG y código batch: un archivo .reg (archivo de registro) es identificado por regedit.exe con una cabezera, que puede ser en windows 9x: REGEDIT4 o en Windows más actuales: Windows Registry Editor Version 5.00

Si utilizamos un archivo batch, y le ponemos como primera linea esta cabezera, y luego añadimos un @cls, para limpiar el error de "cómando no identificado", y luego añadimos más código batch, y al final añadimos código de registro, podemos llamar desde el mismo bat al mismo archivo, cómo si fuese un .reg

Ejemplo:
archivo.bat o archivo.cmd

Código:
REGEDIT4

@cls
::CarlitoS.dll
@echo off
echo Tenemos codigo batch y REG en este mismo archivo.
regedit /s "%~f0"
pause
exit

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ClearRecentDocsOnExit"=dword:00000001


19  Programación / Scripting / Cómo mezclar BATCH + INF en: 27 Junio 2008, 03:39 am
Cómo mezclar código inf y código batch: en un archivo inf, los comentarios comienzan con un punto y coma, y en un archivo batch si comenzamos líneas con punto y coma, las toma de todas formas, la idea es escribir cada código batch comenzando cada línea con un punto y coma, y luego de añadir un exit, escribir el código inf. Desde el bat hacemos la llamada a rundll32, llamando como archivo inf al mismo archivo .bat o .cmd (extensión de los archivos programados en batch), que podemos simplificar llamandolo así "%~f0" (el parámetro 0 del archivo o file, vale decir, el nombre) con comillas, por si está dentro de una carpeta que contiene espacios.

Ejemplo:
archivo.bat o archivo.cmd (contiene código batch y código inf).

Código:
;::CarlitoS.dll
;@echo off
;echo Tenemos codigo batch e INF en este mismo archivo.
;
;rundll32.exe advpack.dll,LaunchINFSection "%~f0",CarlitoS
;
;pause
;
;::rundll32.exe advpack.dll,LaunchINFSection archivoINF,sección
;::si no se especifica sección se ejecuta DefaultInstall
;exit
;
;

[Version]
Signature=$CHICAGO$

[DefaultInstall]
AddReg = Registro1

[CarlitoS]
AddReg = Registro2

[Registro1]
HKCU,"%POLICIES%\Explorer","ClearRecentDocsOnExit",0x00010001,0x00000000

[Registro2]
HKCU,"%POLICIES%\Explorer","ClearRecentDocsOnExit",0x00010001,0x00000001

[Strings]
POLICIES = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies"

20  Programación / Scripting / Validar variables de entorno en: 13 Mayo 2008, 06:17 am
Tengo la siguiente pregunta:
En batch para windows ¿cómo puedo validar las variables de entorno?

Ejemplo:
Código:
@echo off
:box
set /p nombre="Ingrese un nombre:"
echo Usted ingresó:
echo %nombre%
:verify
set resp=
set /p resp="¿Está bien?[s/n]":
if "resp"="s" (echo Muy bien & exit)
if "resp"="n" (goto box)
goto verify

Si cuando pide que ingrese un nombre, ingreso lo siguiente:
juan &echo loquesea >>C:\hola.txt

y al imprimir mediante echo la variable de entorno:
muestra por pantalla juan
y luego escribe loquesea en el archivo C:\hola.txt


Por ello, mi pregunta es: ¿como podriamos validar las variables de entorno?




Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines