problema en la creacion de shellcode basica

Iniciado por daryo, 14 Julio 2014, 21:57 PM

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

daryo

#10
solucionado

ya me funciono , al parecer desde windows vista la ubicacion de kernel32.dll es varia con cada reinicio y hay que hacer algunas cosas adicionales.Pero al menos ahora una vez encontrado la ubicacion de las librerias funciona perfecto:

Código (asm) [Seleccionar]
.386
.model flat,stdcall
option casemap:none
.code
 
inicio:    
call delta    
delta:    
pop ecx    
sub ecx,offset delta  
add ecx,offset lib  
mov eax,77272864h ;direccion de loadlibraryA varia  
push ecx    
call eax    
push 0  
push 0    
push 0    
push 0        
mov eax,778eea71h ;//direccion de MessageBoxA    varia
call eax
retn
lib db "User32.dll",0
end inicio

 
buenas

MCKSys Argentina

Otra cosa que puedes hacer (para no usar el deltaoffset) es:

Código (asm) [Seleccionar]

.386
.model flat,stdcall
option casemap:none
.code

inicio:   
call delta        ;provoca el PUSH de la direccion del string que sigue
db "User32.dll",0
delta:
mov eax,77272864h ;direccion de loadlibraryA varia
call eax   
push 0 
push 0   
push 0   
push 0       
mov eax,778eea71h ;//direccion de MessageBoxA    varia
call eax
retn
end inicio


Para solucionar el problema de las DLLs, sólo necesitas LoadLibrary y GetProcAddress. Luego, usando el método que haz puesto o el que te dejo aquí; haces LoadLibrary y GetProcAddress y ya tienes la direccion real de la API.

Hay múltiples ejemplos de llamadas a API con código pic en internet.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Mr.Virus

perdón la ignorancia pero ustedes le llaman shellcode al bytecode que copian y pegan de su depurador y lo usan en c++ ? o llaman shellcode a otra cosa, ?

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."