|
861
|
Programación / ASM / Re: Ayuda! Problema con MASM Inline
|
en: 28 Agosto 2013, 01:25 am
|
Gracias MCK! Pero no se arreglo cambiando [Contador] por Contador.. Igual no entiendo porque Contador tiene el valor de hint, Contador se va incrementando en 1 a medida que recorre las funciones "exportables" dentro del modulo... 116 son todas las funciones que exporta Ws2_32.dll,, o sea que.. llega al final de la export table y no encuentra la funcion "socket",, pero algo esta buscando! y no encuentra!!! Me tiene mal ya.. desde las 14:00 estoy con esto.. y son casi las 21 aca!! jaja
Saludos!!
|
|
|
865
|
Programación / ASM / Ayuda! Problema con MASM Inline
|
en: 27 Agosto 2013, 23:38 pm
|
Hola amigos! Alguien con un poco de tiempo se anima a revisar por que no funciona este code! El error salta cuando busco la direccion de "socket",, me da mal el Ordinal de la funcion, y no me devuelve la direccion... Gracias! #include <windows.h> #include <stdio.h> #include <iostream> using namespace std;
int Kernel32(); DWORD GetOffset(DWORD Modulo, char *Funcion, DWORD Tamaño); int LoadLibrari(char *Modulo);
DWORD Krn32 = 0; DWORD Ws2_32 = 0; //************************** DWORD GetProcA = 0; DWORD LoadLibA = 0; DWORD Sock = 0; //************************** DWORD Contador; DWORD PEHeader = 0; DWORD ET = 0; WORD PosicionEAT = 0;
DWORD Retorno = 0;
int main() {
Kernel32(); printf("\n\nLa direccion de Memoria de Kernel32.dll es: %8X", Krn32); printf("\nLa direccion de Memoria de Kernel32.dll con LoadLibraryA es: %8X", LoadLibraryA("Kernel32.dll")); cout << "\n\n*****************************************************************" << endl;
GetProcA = GetOffset( Krn32, "GetProcAddress", 14 ); printf("La direccion de Memoria de GetProcAddress es: %8X", GetProcA); printf("\nLa direccion de Memoria de GetProcAddress con GetProcAddress es: %8X", GetProcAddress((HMODULE)Krn32,"GetProcAddress"));
cout << "\n\n*********************************************************************" << endl;
LoadLibA = GetOffset( Krn32, "LoadLibraryA", 12 ); printf("La direccion de Memoria de LoadLibraryA es: %8X", LoadLibA); printf("\nLa direccion de Memoria de LoadLibraryA con GetProcAddress es: %8X", GetProcAddress((HMODULE)Krn32,"LoadLibraryA"));
cout << "\n\n*********************************************************************" << endl;
Ws2_32 = LoadLibrari("ws2_32.dll"); printf("\nLa direccion de Memoria de Ws2_32.dll es: %8X", Ws2_32); printf("\nLa direccion de Memoria de Ws2_32.dll con LoadLibraryA es: %8X", LoadLibraryA("Ws2_32.dll"));
cout << "\n\n*********************************************************************" << endl; Sock = GetOffset( Ws2_32, "socket", 6 ); printf("\nLa direccion de Memoria de socket es: %8X", Sock); printf("\nLa direccion de Memoria de socket con GetProcAddress es: %8X", GetProcAddress((HMODULE)Ws2_32,"socket"));
cin.get(); }
int Kernel32() {
__asm{ mov eax, fs:[0x30] mov eax, [eax + 0x0C] lea eax, [eax + 0x0C] NextModule: mov eax, [eax] mov ebx, [eax + 0x30] cmp byte ptr[ebx + 6*2], '3' jne NextModule mov ebx, [eax + 0x18] mov Krn32, ebx } return 0; } DWORD GetOffset(DWORD Modulo, char *Funcion, DWORD Tamaño) {
__asm {
mov Contador, -1
mov eax, Modulo add eax, [eax+3Ch] mov [PEHeader], eax add eax, 78h mov eax, [eax] add eax, Modulo mov [ET], eax add eax, 20h mov eax, [eax] add eax, Modulo
bucle:
inc Contador mov ebx, [eax] add ebx, Modulo mov esi, ebx add eax, 4 mov edi, Funcion mov ecx, Tamaño repe cmpsb jnz bucle
mov ecx, [ET] mov ecx, [ecx+24h] add ecx, [Modulo] mov eax, [Contador] add eax, eax add ecx, eax mov ax, word ptr [ecx] mov [PosicionEAT], ax
mov eax, [ET] mov eax, [eax+1Ch] add eax, Modulo mov ebx, [Contador] rol ebx, 2 add eax, ebx mov eax, [eax] add eax, Modulo mov Retorno, eax
} cout << "\nEl Ordinal es: " << Contador << endl; return Retorno; } int LoadLibrari(char *Modulo) { __asm{ push [Modulo] call [LoadLibA] mov Retorno, eax }
return Retorno; }
|
|
|
866
|
Programación / ASM / Re: PEB y funciones de kernel32
|
en: 8 Agosto 2013, 19:22 pm
|
Pero mas que muchisimas gracias!! Ese empujoncito precisaba jejeje Ahora me pongo con la lectura EDITADO: Y gracias a The Swash que no termine de leer el texto y ya se nota que esta muy bueno!
|
|
|
868
|
Programación / ASM / PEB y funciones de kernel32
|
en: 8 Agosto 2013, 02:39 am
|
Hola amigos!! Alguien podria ayudarme a entender bien como funciona el tema de encontrar funciones en kernel32 y utilizarlas? Hace 3 dias que le dedico 8hs diarias y no he podido encontrar las funciones!! Es muy estresante jaja Lei todos los post que hablan del PEB del foro y muchos otros mas! Pero a mi humilde entender, casi todos llegan hasta la parte de encontrar la direccion de kernel32,, eso lo entendi.. pero no logro una vez ahi parado (en la direccion de memoria de kernel32) seguir buscando dentro las funciones, y mucho menos ejecutarlas!! Como recorro el modulo kernel32??? Muchas gracias!! PD: Algo de la info que rescate, la que entendi mejor -> http://el-blog-de-thor.blogspot.com/2011/05/obtener-la-direccion-base-de.htmlAhi estan muy bien detalladas las estructuras que vamos recorriendo http://el-blog-de-thor.blogspot.com/2011/05/usando-getprocaddress-y-loadlibrary_07.htmlAhi esta explicado como recorrer y buscar la funcion GetProcAddress (Pero creo que utiliza otro metodo, porque recurre a la cabezera del PE y no entiendo para que) :/ http://www.projectshellcode.com/node/22Ahi hay una shellcode pero entiendo nada EDITADO: Bien,, desde que escribi la consulta hasta recien, conoci una herramienta que se llama dumpbin! Excelente! Pero igual preciso ayuda jaja
|
|
|
870
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Troyanos con Cliente Web
|
en: 5 Agosto 2013, 19:37 pm
|
Hola! Gracias por responder! Si, para mi la conexion tiene que ser con sockets, pero como decia,, los hosting gratuitos no ofrecen sockets.. y no voy a contratar hosting y dominio para eso.. no se podria enviar por post en c++ informacion a ciertos formularios? despues yo recuperaria esa informacion y la mostraria en la pagina como una conexion establecida.. el problema seria como enviarle al programa c++ los comandos desde el web panel sin sockets Alguna sugerencia ? Y con respecto al programa c++ y los Av's.. bueno,, eso ya es cuestion de ocultar las llamadas apis y demais.. podria adaptar un codigo en asm que tengo tambien..
|
|
|
|
|
|
|