Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Arkangel_0x7C5

#71
lo que estas viendo es una función, parece que esta echo en c++ o algo de eso. los parametros en las funciones se pasan a partir de [ebp+8], el siguiente parámetro estaría en [ebp+0x0C] y asi sucesivamente. el puntero a this se lo están pasando por ecx. Yo lo que haría seria buscar los call a esa función.

Saludos
#72
Cita de: [Zero] en  7 Abril 2012, 16:00 PM
Hay algunas claves que seguro se pueden utilizar par lo que dices, aunque no es muy efectivo, casi la totalidad de los antivirus monitorizan en tiempo real los cambios en el registro, y te harán muy difícil usar una de esas claves. Algo más efectivo es infectar alguna DLL que sepas que se va a cargar, o simplemente infectar todo archivo ejecutable (tanto exes como dll's) que te encuentres. También se que es posible hacer que se ejecute tu código cada vez que se alguien cargue la USER32.DLL (osea, el 99% de las veces que alguien ejecute un ejecutable), pero no recuerdo como hacerlo, el que me lo había comentado creo que era Arkangel :P .

Saludos
esta es la clave:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="tuDLL.dll"
"LoadAppInit_DLLs"=dword:00000001
#73
lo que se hace es agregar secciones al exe o agrandar una ya existente, luego rediriges el punto de entrada y ya lo tienes infectado, para hacerlo con dll seria como con el exe, solo que en este caso podrías enganchar las funciones exportadas de manera permanente. Lo del compilador seria posible, aunque no la he visto todavía. Pero de hacerse e infectar una compañía de desarrollo de software podría tener una gran difusión

Saludos
#74
Cita de: RHL en 27 Marzo 2012, 11:57 AM
jeje  ;-)
que buena informacion la que me mostro. Eternal porque no puedo cargar el exe?
primero intente con el notepad... carge el notepad luego
!dh notepad.exe

y me mostro la informacion, luego intente cargar mi exe de MASM y no me mostraba ni errores ni nada simplemente no
mostraba nada :|


PD. tambie no entiendo porque MASM genera un "pre"-JMP pudiendo hacer el call a la IAT directamente :P
comparando el compilador de VC con MASM no se porque lo hace :P

Lo del jmp puede ser para las reubicaciones, que a la hora de reubicar, no es lo mismo hacerlo en un jmp que en 20 call

Saludos
#75
ASM / Re: DUDA sobre Carry
11 Enero 2012, 12:05 PM
Esa bandera no se pone uando se desborda un registro?
Si fuera asi, en tu ejemplo solo saltaría si usaras los registros de 8 bits

Saludos
#76
Lo que ocurre es que tu al hacer un algoripmo puedes optar por crear grandes estructuras de datos para guardar lo procesado, o no guardarlo e ir analizando sobre la marcha.

Un ejemple de ello son los parser de xml. Los que usan el metodo SAX usan muy poca memoria, pero no permiten el acceso aleatorio. Los DOM crean un gran arbol que luego permite el acceso a cada uno de los nodos, ocupa mas memoria pero solo se analiza una vez

Saludos
#77
Programación C/C++ / Re: ¿Socket cerrado?
23 Diciembre 2011, 21:10 PM
yo detecto la desconexion usando socket asíncronos, lo detecto al usar recv

Código (cpp) [Seleccionar]

ulong ReadSZ = 0;
wsock->Ioctlsocket(hSocket,FIONREAD,&ReadSZ);
if(ReadSZ){
//Se recibieron datos
//Codigo de recv
return ReadSZ;
}else{
//No hay datos
ReadSZ = wsock->Recv(hSocket,0,0,MSG_PEEK);
if(!(ReadSZ+1)){
//A habido un error
switch(wsock->WsaGetLastError()){
case WSAEWOULDBLOCK:
break;
case WSAECONNRESET:
//Se cerro la conexion
default:
//errror
return -1;
}
}else{
//Se cerro la conexion
return -1;
}
}


La cosa es que si ReadSZ es zero no hay datos para leer, y al usar rcv si la conexio se cierra bien da 0 y si se cierra mal da SOCKET_ERROR y LastError = WSAECONNRESET.
#78
Si, claro. Este efecto es cosa de la implementacion del compilador

Saludos
#79
Cita de: naderST en  7 Diciembre 2011, 21:36 PM
Entonces es basura y es solo casualidad que agarre el valor de retorno de la otra función?
Casualidad no es. Sale el de la otra función, porque el valor se queda en el registro de la cpu que se usa para devolver valores. y como el ultimo que lo modifico fue esa funcion para devolverte ese valor, al final se queda igual porque no hay nada que lo modifique. y te sale ese valor de retorno. Si el compilador colocara algo entre medias no te daría ese resultado....

Saludos
#80
La memoria virtual es una simulación de la memoria real. Se finge tener mas de o que se tiene. Normalmente cada proceso tiene un espacio de memoria virtual independiente. Para ese proceso es como si estuviera solo y tuviera toda la memoria para el solo.

Normalmente se le asigna un espacio tan grande como el espacio máximo direccional por la plataforma. Una dirección virtual no tiene necesariamente que apuntar a la misma dirección física o tener una dirección física asignada. El sistema para poder manejar toda esta memoria que supuestamente tiene, va guardando lo que en ese momento es menos usado en disco para poder poner en memoria lo que hace falta en ese momento.

Mas o menos esto es todo.

Saludos