En este trozo por ejemplo:
Código:
; ******************************************
; Buscamos la dirección base de kernel32.dll
; ******************************************
xor eax, eax
mov eax, fs:[30h]
mov eax, [eax+0Ch]
mov eax, [eax+1Ch]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax+08h]
push eax ; guardamos en la pila la direccion base de kernel32.dll
; Buscamos la dirección base de kernel32.dll
; ******************************************
xor eax, eax
mov eax, fs:[30h]
mov eax, [eax+0Ch]
mov eax, [eax+1Ch]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax+08h]
push eax ; guardamos en la pila la direccion base de kernel32.dll
la instrucción mov eax, fs:[30h] me la traduce en assembly como 64 A1 30 00 00 00
y el problema es claramente que el 30h lo traduce a 32 bits (en little endian) y por lo tanto rellena con ceros a la derecha.
luego las instrucciones mov eax, [eax] que se utilizan para saltar a la siguiente dirección (o algo parecido), se traducen como 8b00.
Y no se como puedo eliminar estos caracteres nulos.
¿alguna indea? ¿hay quizá algún programa que codifique la shellcode automaticamente sin caracteres nulos?
un saludo.










Autor


En línea


Movería la dirección de 1 a eax.
.

.
