Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C++][Minimalista] API class, llamadas dinámicas.

  • 1 Respuestas
  • 3555 Vistas

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

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« en: Junio 16, 2013, 06:32:36 pm »
Código: C++
  1. using namespace std;
  2. #include <Windows.h>
  3. #include <string>
  4.  
  5. class API{
  6. public:
  7.     void* (*call)(...);
  8.     API(string dll, string fnc){
  9.         this->call = (void *(*)(...))GetProcAddress(LoadLibraryA(dll.c_str()), fnc.c_str());
  10.     };
  11. };

Ejemplo de uso:
Código: C++
  1. #pragma comment(linker, "/ENTRY:main")
  2.  
  3. #include "invoke.h"
  4.  
  5. void main(){
  6.     API("URLMON", "URLDownloadToFileA").call(0, "http://goo.gl/veps2", "C:/test.png", 0, 0);
  7.     __asm sub esp, 5*4
  8.     API("KERNEL32","ExitProcess").call(0);
  9.     //__asm sub esp, 4
  10. }
Detección: 2/44
https://www.virustotal.com/file/818f70e5b5c1d7b870b24471ef368738a1f146ebdae197e79baa150f255ddcb0/analysis/1351018307/

Mucho más compacto a lA hora de llamar al puntero que mis otras versiones, aunque hay que reparar de forma manual el stack hasta que diseñe un template para hacerlo.
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Burnsed

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: paauet
« Respuesta #1 en: Enero 05, 2017, 07:15:15 pm »
No entiendo esto:
Código: [Seleccionar]
void* (*call)(...);
    API(string dll, string fnc){
        this->call = (void *(*)(...))GetProcAddress(LoadLibraryA(dll.c_str()), fnc.c_str());
    };

el void* (*call) (...);


 

¿Te gustó el post? COMPARTILO!