Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Diciembre 04, 2008, 05:49:46
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: "aqui les" presento a Aquiles 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: "aqui les" presento a Aquiles  (Leído 206 veces)
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1362


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« en: ſeptiembre 10, 2007, 05:45:36 »

juegos gratis
Hola, bueh, hice esto, son 470 lineas, lei en no se donde que se calculan 15 bugs por cada 100 lineas, digamos que lo baje a 10 por cada 100 linas  Roll Eyes, asi que tienen que encontrar los 47 bugs, jeje  Tongue

bueh, para que se den una idea, todos los programas que no estan en una lista los va a finalizar, y los que esten en otra lista, los va a finalizar pero le dice al usuario que no esta permitido el uso del programa (...)

la imagen de fondo es todo azul, con aquiles al costado y a la derecha hay unos dibujitos de unos botones... igual se van a dar cuenta cuando lean los comentarios.

Les presento a..... Aquiles:

Código:
#include <windows.h>
#include <Tlhelp32.h>
#include <Ni0.h>//funciones y constantes creados por mi
//SI, NO, y la funcion comparch(char *a) que comprueba si existe el archivo(devuelve SI o NO)
//esta claro que si existe devuelve SI, y sino NO xD
//si no ponen a Ni0.h en la carpeta donde estan las demas cabezeras, tienen que poner #include "Ni0.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "aquiles.h"//define a MATAR como 1 y a ACTUALIZAR como 2, tambien esta
//la cadena informacion

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
HWND hwnd;
FILE* f;
FILE* s;
int estado = NO;//si hay un carte de que no esta permitido el uso del programa
//se pone en SI
char permitidos[2000][100];
char nopermitidos[2000][100];
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{             
    MSG messages;           
    WNDCLASSEX wincl;       

   
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;     
    wincl.style = CS_DBLCLKS;                 
    wincl.cbSize = sizeof (WNDCLASSEX);

   
    wincl.hIcon = LoadIcon (hThisInstance, "icon");
    wincl.hIconSm = LoadIcon (hThisInstance, "icon");
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 
    wincl.cbClsExtra = 0;                     
    wincl.cbWndExtra = 0;                     
   
    wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;

   
    if (!RegisterClassEx (&wincl))
        return 0;

   
    hwnd = CreateWindowEx (
           0,                 
           szClassName,         
           "Aquiles",       
           WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX | WS_CAPTION
           ,
           CW_USEDEFAULT,       
           CW_USEDEFAULT,       
           500,               
           380,                 
           HWND_DESKTOP,       
           NULL,               
           hThisInstance,       
           NULL                 
           );   
    if(MatarProceso("Aquiles.exe", NO) == SI){//se fija si ya se habia ejecutado, si es asi, se muestra la ventana
        cargar();
        ShowWindow (hwnd, nFunsterStil);
    }
    else{
        cargar();
        SetTimer(hwnd, MATAR, 100, NULL);
        SetTimer(hwnd, ACTUALIZAR, 1000, NULL);
    }
    InvalidateRect(hwnd, NULL, TRUE);

    while (GetMessage (&messages, NULL, 0, 0))
    {
       
        TranslateMessage(&messages);

        DispatchMessage(&messages);
    }

   
    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static int i = 0;
    int ihwnd = 0;
    HDC hDC;
    HDC hcDC;
    PAINTSTRUCT ps;
    static HINSTANCE hInstance;
    static HBITMAP fondo;
    switch (message)                 
    {
        case WM_CREATE:
            hInstance = ((LPCREATESTRUCT) lParam)->hInstance;
            InvalidateRect(hwnd, NULL, TRUE);
            fondo = LoadBitmap(hInstance, "fondo");
            break;
        case WM_PAINT:
            hDC = BeginPaint(hwnd, &ps);
            hcDC = CreateCompatibleDC(hDC);
            SelectObject(hcDC, fondo);
            BitBlt(hDC, 0, 0, 500, 350, hcDC, 0, 0, SRCCOPY);
            ReleaseDC(hwnd, hcDC);
            DeleteDC(hcDC);
            break;
        case WM_LBUTTONUP:
            if(dentro_cuadrado(302, 27, 402, 67, LOWORD(lParam), HIWORD(lParam)) == SI){//si se hizo click sobre lista permitidos
                MessageBox(hwnd, informacion, "leer", MB_OK | MB_ICONEXCLAMATION);
                system("notepad permitidos.lst");
                sacariguales();
            }
            else if(dentro_cuadrado(304, 89, 404, 129, LOWORD(lParam), HIWORD(lParam)) == SI){//si se hizo click sobre lista no permitidos
                MessageBox(hwnd, informacion, "leer", MB_OK | MB_ICONEXCLAMATION);
                system("notepad nopermi.lst");
                sacariguales();
            }
            else if(dentro_cuadrado(305, 146, 405, 186, LOWORD(lParam), HIWORD(lParam)) == SI){//si se hizo click sobre actualizar
                MatarProceso(NULL, ACTUALIZAR);
                save();
                MessageBox(hwnd, "Se ha actualizado la lista", "Listo!", MB_OK);
            }
            else if(dentro_cuadrado(304, 205, 404, 245, LOWORD(lParam), HIWORD(lParam)) == SI){//si se hizo click sobre ocultar
                PostQuitMessage(0);
            }
            else if(dentro_cuadrado(305, 262, 405, 302, LOWORD(lParam), HIWORD(lParam)) == SI){//si se hizo click sobre salir
                s = fopen("salir", "w");
                fclose(s);
                PostQuitMessage(0);
            }
            break;         
        case WM_DESTROY:
            PostQuitMessage (0);       
            break;
        case WM_TIMER:
            if(wParam == MATAR){
                while(i < 2000){
                    if(nopermitidos[i][0] != '\0')//mata los no permitidos
                        MatarProceso(nopermitidos[i], SI);
                    i++;
                }
                i = 0;
                MatarProceso(NULL, MATAR);//mata los que no esten en la lista de permitidoss
            }
            else if(wParam == ACTUALIZAR){
                cargar();
                if(comparch("salir") == SI){
                    remove("salir");
                    PostQuitMessage(0);
                }
            }
            break;
        default:                     
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

MatarProceso(const char *kill_proc, int a)
{
    char mensage[100];
    int ia = 0, i = 0, ic = 0, c = 0, m = 0;
    char error[100];
    int actualiza = 0;
    HANDLE laris;
    PROCESSENTRY32 process;
    process.dwSize = sizeof(PROCESSENTRY32);
    void* photo = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    Process32First(photo, &process);
    switch(a)
    {
        case MATAR:
            while(photo != NULL)
            {
                Process32Next(photo, &process);
                laris = OpenProcess(PROCESS_TERMINATE, FALSE, process.th32ProcessID);
                while(i < 2000){                 
                    if(!strcmpi(process.szExeFile, permitidos[i]))
                        break;
                    else if(!strcmpi(process.szExeFile, "notepad.exe"))//todos estos los toma como permitidos
                        break;
                    else if(!strcmpi(process.szExeFile, "Aquiles.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "rundll32.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "MSConfig.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "rundll32.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "regedit.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "explorer.exe"))
                        break;
                    else if(!strcmpi(process.szExeFile, "taskmgr.exe"))
                        break;
                    else
                        i++;
                    if(permitidos[i - 1][0] == '\0')
                        ic++;                         
                }
                if(i == 2000 && ic < 2000){//si comprobo y ninguno era igual (i = 2000) y por lo menos habia uno en la lista
                    TerminateProcess(laris, 0);
                     break;//tendria que funcionar mejor
                }
                if(GetLastError() == ERROR_NO_MORE_FILES)
                    break;
                i = 0;
                ic = 0;
                CloseHandle(laris);
            }
            break;
        case SI:
        case NO:
            while(photo != NULL)
            {
                Process32Next(photo, &process);
                laris = OpenProcess(PROCESS_TERMINATE, FALSE, process.th32ProcessID);
                if(!strcmpi(process.szExeFile, kill_proc))
                {
                    switch(a)
                    {
                        case SI:   
                            TerminateProcess(laris, 0);
                            if(estado == NO){//si no se habia puesto el cartel...
                                estado = SI;
                                sprintf(mensage, "no esta permitido el uso del programa %s", kill_proc);
                                MessageBox(hwnd, mensage, "Aviso", MB_OK | MB_ICONEXCLAMATION);
                                estado = NO;
                            }//esto es para que no se llene la pantalla de cartelitos hasta
//que aquiles logre finalizar el proceso
                            break;
                        case NO://esto es para cuando se comprueba si ya se estaba ejecutando
                            c++;
                            if(c > 2)   
                                return SI;
                    }   
                }
                if(GetLastError() == ERROR_NO_MORE_FILES)
                {
                    break;
                }
                CloseHandle(laris);
            }
            break;
        case ACTUALIZAR:
            while(photo != NULL)
            {
                Process32Next(photo, &process);
                laris = OpenProcess(PROCESS_TERMINATE, FALSE, process.th32ProcessID);
                while(ia < 2000){//busca un espacio vacio
                    if(permitidos[ia][0] != '\0')
                        ia++;
                    else
                        goto copy;
                }
                MessageBox(hwnd, "ERROR: se lleno la lista de permitidos", "error", MB_OK | MB_ICONERROR);
                return;
                copy:
                strncpy(permitidos[ia], process.szExeFile, 100);//copia en el espacio vacio
                while(m < 100){//para saver si el archivo es demaciado largo
                    if(permitidos[ia][m] != '\0'){
                        m++;
                    }
                    else
                        break;
                }
                if(m == 100){
                    permitidos[ia][0] = '\0';
                    sprintf(error, "ERROR: el archivo %s es demasiado largo (mas de 100 caracteres)", process.szExeFile);
                    MessageBox(hwnd, error, "ERROR", MB_OK | MB_ICONERROR);
                }
                else{//si ya estaba en la lista borra uno de los 2
                    while(actualiza < 2000){
                        if(actualiza == ia)
                            actualiza++;
                        if(!strcmpi(permitidos[actualiza], permitidos[ia]))
                            permitidos[actualiza][0] = '\0';
                        actualiza++;
                    }
                    actualiza = 0;
                }
                if(GetLastError() == ERROR_NO_MORE_FILES)
                    break;
                m = 0;
                CloseHandle(laris);
            }
            break;
    }
    return NO;
}

cargar(void)
{
    char c;
    int i = 0, m = 0, flagp = NO, flagn = NO;
    if((f = fopen("nopermi.lst", "r")) == NULL){//si no esta crea uno y pone en 0 la lista
        f = fopen("nopermi.lst", "w");
        fclose(f);
        while(i < 2000){
            nopermitidos[i][0] = '\0';
            i++;
        }
        flagn = SI;
    }
    fclose(f);
    i = 0;
    if((f = fopen("permitidos.lst", "r")) == NULL){//lo mismo
        f = fopen("permitidos.lst", "w");
        fclose(f);
        while(i < 2000){
            permitidos[i][0] = '\0';
            i++;
        }
        flagp = SI;
    }
    fclose(f);
    i = 0;
    if(flagp == NO){
        f = fopen("permitidos.lst", "r");
        i = 0;
        m = 0;
        while((c = getc(f)) != EOF){
            if(m >= 99 && c != '\n'){//si el archivo tiene mas de 100 caracteres...
                if(m == 99){
                    MessageBox(hwnd, "Error en el archivo\nun archivo de la lista de permitidos es demasiado largo\ncompruebe que todos tienen meno de 100 caracteres", "Advertencia", MB_OK | MB_ICONEXCLAMATION);
                    m++;
                }//cuando el archivo es lago, no hace nada hasta que no encuentre \n
            }
            else if(m == 100 && c == '\n'){//cuando lo encuentra...
                m = 0;
                permitidos[i][m] = '\0';
                i++;
                if(i == 2000)
                    break;
            }
            else if(c == '\n'){
                permitidos[i][m] = '\0';
                i++;
                m = 0;
                if(i == 2000)
                    break;
            }
            else{
                permitidos[i][m] = c;
                m++;
            }
        }
        fclose(f);
    }
    if(permitidos[i][m] != '\0' && m != 0){//si no termina con nueva linea...
        if(m == 100)
            permitidos[i][0] = '\0';
        if(m < 99)
            permitidos[i][m + 1] = '\0';
        else
            permitidos[i][99] = '\0';
    }
    i++;
    while(i < 2000){
        permitidos[i][0] = '\0';
        i++;
    }
    i = 0;
    m = 0;
    if(flagn == NO){
        f = fopen("nopermi.lst", "r");
        i = 0;
        m = 0;
        while((c = getc(f)) != EOF){
            if(m >= 99 && c != '\n'){
                if(m == 99){
                    MessageBox(hwnd, "Error en el archivo\nun archivo de la lista de nopermitidos es demasiado largo\ncompruebe que todos tienen meno de 20 caracteres", "Advertencia", MB_OK | MB_ICONEXCLAMATION);
                    m++;
                }
            }
            else if(m == 100 && c == '\n'){
                m = 0;
                nopermitidos[i][m] == '\0';
                i++;
                if(i == 2000){
                    break;
                }
            }
            else if(c == '\n'){
                nopermitidos[i][m] = '\0';
                i++;
                m = 0;
                if(i == 2000)
                    break;
            }
            else{
                nopermitidos[i][m] = c;
                m++;
            }
        }
        fclose(f);
    }
    if(nopermitidos[i][m] != '\0' && m != 0){
        if(m == 100)
            nopermitidos[i][0] = '\0';
        if(m < 99)
            nopermitidos[i][m + 1] = '\0';
        else
            nopermitidos[i][99] = '\0';
    }
    i++;
    while(i < 2000){
        nopermitidos[i][0] = '\0';
        i++;
    }
}

save(void)
{
    int i = 0, m = 0;
    if((f = fopen("permitidos.lst", "a")) == NULL){
        MessageBox(hwnd, "ERROR: El archivo permitidos.lst no se puede abrir para escritura", "ERROR", MB_OK | MB_ICONERROR);
        return;
    }
    fclose(f);
    f = fopen("permitidos.lst", "w");
    while(i < 2000){
        while(m < 100){
            if(permitidos[i][m] == '\0'){
                putc('\n', f);
                break;
            }
            else
                putc(permitidos[i][m], f);
            m++;
        }
        i++;
        m = 0;
    }
    fclose(f);
    if((f = fopen("nopermi.lst", "a")) == NULL){
        MessageBox(hwnd, "ERROR: El archivo nopermi.lst no se puede abrir para escritura", "ERROR", MB_OK | MB_ICONERROR);
        return;
    }
    i = m = 0;
    fclose(f);
    f = fopen("nopermi.lst", "w");
    while(i < 2000){
        while(m < 100){
            if(nopermitidos[i][m] == '\0'){
                putc('\n', f);
                break;
            }
            else
                putc(nopermitidos[i][m], f);
            m++;
        }
        i++;
        m = 0;
    }
    fclose(f);
}

sacariguales(void)//si esta dos veces el mismo programa saca uno
{
    int i = 0, d = 0;;
    cargar();
    while(i < 2000){
        while(d < 2000){
            if(!strcmpi(permitidos[i], permitidos[d]) && d != i)
                permitidos[d][0] = '\0';
            d++;
        }
        d = 0;
        i++;
    }
    i = d = 0;
    while(i < 2000){
        while(d < 2000){
            if(!strcmpi(nopermitidos[i], nopermitidos[d]) && d != i)
                nopermitidos[d][0] = '\0';
            d++;
        }
        d = 0;
        i++;
    }
    save();
}
Cheesy Cheesy Cheesy Grin Grin Grin Tongue Tongue Tongue Roll Eyes Roll Eyes Roll Eyes Cry Cry Cry
« Última modificación: ſeptiembre 22, 2007, 03:35:48 por Ni0 » En línea

Inside The Source Code




Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1362


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #1 en: ſeptiembre 10, 2007, 12:00:30 »

otra cosa, cuando postie estaba apurado, no se si se entiende bien, pero explico de nuevo que hace

Código:
Aquiles -> por Ni0

Aquiles es un programa que va a cerrar todos
los programas que no esten en una lista y va
a cerrar los programas que esten en una lista
informandole al usuario que no se permite el
uso del programa (como cuando no queremos que
otas personas usen un programa, entonces no lo
va a poder usar y se le va a informar que no
esta permitido el uso)

Con solo ejecutar una vez el programa, este ya
esta actuando, pero para poder ver o cambiar
las listas o cerrar el programa, hay que ejecutarlo
otra vez.
Si apretamos sobre Lista de admitidos, vamos a ver
un cartel que nos recomienda que pongamos en Buscar
actualmente en ejecucion, esto lo que hace es agregar
automaticamente a la lista de permitidos los programas
que actualmente se esten ejecutando (lo recomiendo
porque es rapido, asi no tenemos que ir al administrador
de procesos y copiar proceso por proceso, porque recueden
que los que no esten en la lista se van a cerrar, y puede
que se cierre el windows), cuando termine, pongan
"lista de admitidos", se les va a abrir el block de notas
y van a ver algunos programas ya escritos (por lo hecho
anteriormente), los programas que agregemos los tenemos
que escribir con la extencion y en un espacio vacio,
por ejemplo si tenemos esto:
////////////////////////estas barritas no aparecen
explorer.exe

iexplore.exe
svchost.exe
...
///////////////////////
los que agregemos los vamos a poner aca:
///////////////////////
explorer.exe
notepad.exe (<----aca)
iexplore.exe
svchost.exe
...
///////////
si no tenemos espacio libre, hay que ponerlo al final
de la lista, poniendo una nueva linea, si tenemos esto:
//////////////
...
explorer.exe
iexplore.exe
svchost.exe
///////////// aca se acaba y parra arriba no hay mas lugar

hay que hacer esto:
///////////////////
...
explorer.exe
iexplore.exe
svchost.exe

//////////// pusimos una nueva linea precionando enter
y despues ponemos en ese lugar el programa
//////////////////
...
explorer.exe
iexplore.exe
svchost.exe
notepad.exe
/////////////////

asegurence que despues de los programas no haya espacios,
tiene que pasar directamente a la otra linea.
Traten de que haya una linea vacia al final, que nos quede
asi:

//////////////////
...
explorer.exe
iexplore.exe
svchost.exe
notepad.exe

/////////////////

es para mas seguridad, no es necesario, pero por si las dudas.

En resumen, los programas tienen que estar escritos con su
extencio y tienen que terminar e ir directamente a la nueva
linea.

Despues de modificar, guardan (archivo->guardar) y cierran el
bloc de notas.

Lo mismo se aplica a la lista de no permitidos, solo que esta
no se auto completa.

Si ponen ocultar solo se va a ir la ventanita, pero el programa
se sigue ejecutando, osea, va a seguir cerrando los programas...

Si ponen Salir, ahi si que se cierra todo por completo y el
programa va a dejar de actuar.

Si en la lista de permitidos no hay nada, la funcion de cerrar
los que no esten en esa lista, no va a actuar (sino se cerraria
todo)

Recuerden esto: LOS PROGRAMAS QUE NO ESTEN EN LA LISTA DE PERMITIDOS
SE VAN A CERRAR, por lo que si no agregan, por ejemplo, al paint y
aquiles esta actuando, no lo van a poder abrir.

Yo lo recomiendo usar asi:
se conectan a internet, abren lo que usan mientas estan conectados
a internet, abren el aquiles, lo vuelven a abrir para ver la ventana
y ponene buscar actualmente en ejecucion, ocultan y entonces mientras
esten conectados a internet, ningun programa "extraño" se va a
ejecutar, cuando se desconectan de internet abren de nuevo el aquiles
y ponen salir.

Tambien pueden dejar la lista de permitidos vacia y en la de no
permitidos ponen programas que no quieren que las otras personas
que usan la pc usen los programas (por ejemplo, supongamos que
tenemos un hijo, este se porta mal y como penitencia no le dejamos
usar los juegos de la pc, pero para asegurarnos de que no lo haga
ponen en la lista de no permitidos los juegos, tienen que poner
el nombre del ejecutable con su extencion (.exe), despues ocultan
y listo).
En línea

Inside The Source Code




Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1362


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #2 en: ſeptiembre 16, 2007, 03:20:24 »

aca les dejo el programa con el codigo fuente:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
http://www.badongo.com/file/4384762


salu2
En línea

Inside The Source Code




Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Linux Registred User #460377
Ni0
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1362


Ni0-inside the source code

Ni0@el-hacker.org
Ver Perfil WWW Email
« Respuesta #3 en: ſeptiembre 22, 2007, 03:42:20 »

agrege un break para que funcione mejor, ya que aveces cuando un proceso es "caprichoso" porque tarda en finalizarce o porque se quiere volver a ejecutar, aquiles quedaba en el bucle, y si intentamos cerrarlo (por el medio adecuado, abriendo de nuevo el aquiles y poniendo salir), no se cerraba, porque se quedaba en el bucle, creo que con el break va a solucionarse, es cuestion de probar el aquiles...

Código:
                        break;
                    else if(!strcmpi(process.szExeFile, "taskmgr.exe"))
                        break;
                    else
                        i++;
                    if(permitidos[i - 1][0] == '\0')
                        ic++;                         
                }
                if(i == 2000 && ic < 2000){//si comprobo y ninguno era igual (i = 2000) y por lo menos habia uno en la lista
                    TerminateProcess(laris, 0);
                     break;//tendria que funcionar mejor, esto es lo que agrege
                }

salu2!
En línea

Inside The Source Code




Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Linux Registred User #460377
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: "aqui les" presento a Aquiles « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC