hola salu2 a todo el foro...pues eso otra ves kon esto y les voy a pedir que no me manden con links a otros pagina pùes mi duda no es tan profunda ni mi pregunta sera tonta mi problema esta en que en un comentario de como conseguir los offsets alguien planteo esto
Un offset es un desplazamiento respecto a una direccion de memoria. Por ejemplo, kernel32.dll
se carga en memoria a partir de la direccion (no me la se, esta es ficticia) 0x76890000.
Es decir, en la direccion 0x76890000 EMPIEZA la DLL ( a esto se le llama DIRECCION BASE,
curioso xDD). Bien, ahora tu lo que kieres es usar la funcion LoadLibraryA
(que esta contenida en esa DLL). Bueno, entonces te informas y te dicen que esa FUNCION
tiene como OFFSET 0x7C. Que kiere decir esto? Pues que la funcion la encuentras aki:
Dir. Base + Offset = Direccion de la Funcion
0x76890000 + 0x7C = 0x7689007C
Asi que cuando kieras llamar a LoadLibraryA en ASM, tienes que mandar sus argumentos a la
pila (push eax/ebx/ecx o datos a mano..., teniendo en esos registros los argumentos, mandandolos
en ORDEN INVERSO). Seria asi:
push eax; // Argumento 2º
push ebx; // Argumento 1º
call 0x7689007C; // Llamada a LoadLibraryA
Esto ejecutara:
LoadLibraryA (argumento1,argumento2);
Creo que se entiende no?
Que esten en C y que funcionen en MSDOS no tiene nada que ver, informate sobre el lenguaje C
Los chicos de Microsoft, son la ostia de caxondos en esto de los offsets.
Te explico. Segun version del sistema operativo, service packs instalados,
parches, etc etc... las DIRECCIONES BASE de las DLL y los correspondientes
OFFSETS de las funciones en ellas contenidas SON DISTINTOS.
pero no explica como sacarlo osea se que esta en la libreria e incluso eh compilado este
#include <stdio.h>
#include <windows.h>
int main (){
LoadLibrary ("msafd.dll");
return 0;
}
Es un simple programa que carga en memoria la libreria msafd.dll.
Luego, en el ollydbg, abrimos este programa, lo arrancamos,
nos vamos a Executable Modules, seleccionamos la libreria msafd.dll
y buscamos la instruccion JMP ESP...
Y ya esta, la direccion de memoria que marque, es el offset.
Salu2 que alguien posteo y que al abrirlo con un debugger tiene que tener la libreria cargada y asi a desde el debugger abriendo view executable modules deberia ver el offset de esa libreria pero no aparece la libreria solo aparecen kernel32.dll y no recuerdo que otra estoy de4sesperado desde que empece en esto hace un par de meses me eh leido manuales de se ya se lo basico eh leido algo muy basico de sockets c++ y javascripts tengo las nociones y eh leido textos de el por que de los overflows y como explotarlos pero aun asi no logro conseguir el dichoso offset y si no tengo yo el sistema operativo que la makina remota tiene como lo saco? ??? estoy desesperado voy a explotar nesesito ayuda por favor es un grito de auxilio pues me estoy frustrando espero pronta respuesta...

por cierto no pido que me regalen las respuesta tan solo huvikeme en donde buscarla y yo estudiare y leere mas hasta encontrarlo pero estoy realmente perdido agradeceria su ayuda