elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ... 381
331  Foros Generales / Foro Libre / Re: las sirenas son reales ustedes que creen? en: 15 Julio 2021, 20:44 pm
Yo creo en las comas  :rolleyes:
332  Programación / Programación C/C++ / Re: Llamar a una funcion de una DLL cargada dinamicamente en: 13 Julio 2021, 11:32 am
Efectivamente eso es lo que pasa con su ejemplo compilado en 32 bits, los parametros que la funcion necesita son de 4 y no 8 bytes pero asi como en Windows en modo protegido en 32 bits los parametros son todos de 4 bytes en Windows en modo largo en x64 los parametros son todos de 8 bytes. Por eso le dije que en principio usara los tipos de parametros de la funcion y de ultima usara PVOID que al menos es el tamaño de un puntero y este se debe poder pasar en un registro y pila "nativamente".

En realidad si podes llamar a CreateProcessA sin problemas, cada parametro en pila ocupa 64 bits de por si, aunque despues la funcion llamada solo lea los primeros 8, 16 o 32 bits. Si bien hay una sutil diferencia en el codigo generado en ambos casos cada parametro ocupa 8 bytes (notese como el  quinto - 1 - y sexto parametros - 0x1230 - se mueven como DWORD o QWORD pero el siguiente parametro siempre esta a la misma distancia, 8 bytes):

Código
  1. ; 45   : ((BOOL (__stdcall *)(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION))CreateProcessA_fn)
  2. ; 46   : (NULL, argv[1], NULL, NULL, TRUE, 0x1230, NULL, NULL, &si, &pi);
  3. mov eax, 8
  4. imul rax, rax, 1
  5. lea rcx, QWORD PTR pi$3[rsp]
  6. mov QWORD PTR [rsp+72], rcx
  7. lea rcx, QWORD PTR si$5[rsp]
  8. mov QWORD PTR [rsp+64], rcx
  9. mov QWORD PTR [rsp+56], 0
  10. mov QWORD PTR [rsp+48], 0
  11. mov DWORD PTR [rsp+40], 4656 ; 00001230H
  12. mov DWORD PTR [rsp+32], 1
  13. xor r9d, r9d
  14. xor r8d, r8d
  15. mov rcx, QWORD PTR argv$[rsp]
  16. mov rdx, QWORD PTR [rcx+rax]
  17. xor ecx, ecx
  18. call QWORD PTR CreateProcessA_fn$2[rsp]

Código
  1. ; 48   : ((BOOL (__stdcall *)(PVOID, PVOID, PVOID, PVOID, PVOID, PVOID, PVOID, PVOID, PVOID, PVOID))CreateProcessA_fn)
  2. ; 49   : (NULL, argv[1], NULL, NULL, (PVOID)TRUE, (PVOID)0x1230, NULL, NULL, &si, &pi);
  3. mov eax, 8
  4. imul rax, rax, 1
  5. lea rcx, QWORD PTR pi$3[rsp]
  6. mov QWORD PTR [rsp+72], rcx
  7. lea rcx, QWORD PTR si$5[rsp]
  8. mov QWORD PTR [rsp+64], rcx
  9. mov QWORD PTR [rsp+56], 0
  10. mov QWORD PTR [rsp+48], 0
  11. mov QWORD PTR [rsp+40], 4656 ; 00001230H
  12. mov QWORD PTR [rsp+32], 1
  13. xor r9d, r9d
  14. xor r8d, r8d
  15. mov rcx, QWORD PTR argv$[rsp]
  16. mov rdx, QWORD PTR [rcx+rax]
  17. xor ecx, ecx
  18. call QWORD PTR CreateProcessA_fn$2[rsp]

Si podria tener problemas con tipos de coma flotante que se pasan en otros registros pero no recuerdo ninguna API de Windows que los use.



Y de cualquier manera si coincido en que es algo a evitar de ser posible.
333  Programación / Programación C/C++ / Re: Llamar a una funcion de una DLL cargada dinamicamente en: 12 Julio 2021, 18:35 pm
Ahh, claro, tiene su logica pero como solo se exportan las funciones en ANSI en un PE no hizo falta la pareja de GetProcAddressA/W  ::)
334  Programación / Programación C/C++ / Re: Llamar a una funcion de una DLL cargada dinamicamente en: 12 Julio 2021, 15:52 pm
Código
  1. hFunc=(int64_t)GetProcAddress((HMODULE)hLib,"WriteConsoleA");

Cita de: msdn
A pointer to a buffer that contains characters to be written to the console screen buffer. This is expected to be an array of either char for WriteConsoleA or wchar_t for WriteConsoleW.

https://docs.microsoft.com/en-us/windows/console/writeconsole

Me alegro si conseguiste hacerlo funcionar :)
335  Programación / Programación C/C++ / Re: Llamar a una funcion de una DLL cargada dinamicamente en: 12 Julio 2021, 12:51 pm
Las funciones que reciben cadenas como parametros en realidad terminan en A si son ANSI o en W si son widechar, asi que hasta ahora tu GetProcAddress devuelve 0 siempre. Con eso te deberia funcionar relativamente bien en x64 aunque no estas especificando la convencion de llamada que en este caso deberia ser stdcall.

No entiendo muy bien la razon de usar un entero de 64 bits con signo en lugar de un void * para hFunc (idem para los parametros, al menos que el entero sea sin signo y que sea de 4 bytes para codigo de 32 bits) y %x deberia ser %p para corresponderse con un puntero al usar printf.

¿hFunc es un puntero a funcion y despues se le asigna el valor de retorno de WriteConsoleA?

En principio yo lo hubiera hecho asi:
Código
  1. BOOL b = ((BOOL (__stdcall *)(HANDLE, const VOID *, DWORD, LPDWORD, LPVOID))hFunc)(hStdout, "coso", 5, 0, 0);

O para generalizarlo y que funcione siempre con el tamaño de un puntero como parametro:
Código
  1. ((BOOL (__stdcall *)(PVOID, PVOID, PVOID, PVOID, PVOID))hFunc)((PVOID)hStdout, (PVOID)"coso", (PVOID)5, 0, 0);

Como la funcion maneja los parametros depende de la convencion de llamada que especificara los registros y/o la pila para acceder a ellos.
336  Foros Generales / Foro Libre / Re: Software "espía", otra forma de violencia silenciosa contra la mujer en: 7 Julio 2021, 17:44 pm
Que no siente precedente pero estoy totalmente de acuerdo con Machacador.

No se si habías escuchado que en la mayoría de los paises de sudamérica la mayoría de las personas denunciadas por violencia son mujeres y no hombres

No escuche nada semejante asi que por favor aporta una fuente que lo sostenga.
337  Programación / ASM / Re: Programa en lenguaje ensamblador en: 5 Julio 2021, 22:44 pm
No, no se hacen tareas ajenas.
338  Foros Generales / Foro Libre / Re: Tema Coronavirus COVID-19. en: 28 Junio 2021, 16:42 pm
el virus no es tan grave como lo ponen peor es la vacuna quieren eliminar la soble poblacion enganando asustando a la gente el nuevo orden mundial planeo este plan macabro yo jamas me vacunaria a las personas q quiero les dire eso siempre a mi me dio covid la pase mal por 10 dias y lo supere.

Lamentablemente no hay vacuna contra la ignorancia.
339  Programación / Programación C/C++ / Re: Semaforos en c en: 25 Junio 2021, 19:26 pm
Tienes Razon, RayR... Acabe cansado de implementarlo y no lei del todo tu respuesta.

Bueno, trata de recordarlo para la proxima y no hacer tareas ajenas.
340  Foros Generales / Noticias / Re: Si aún guardas la clave de Windows 7 tendrás Windows 11 gratis en: 21 Junio 2021, 20:42 pm
Yo soy desarrollador de modulos de modo Kernel desde hace mas de 15 años para Windows y desde hace mas de 2 años para macOS y segun mi modesta opinion el iokit de Apple es un chiste malo comparado con el WDM, no tiene ni para empezar.
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ... 381
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines