![]() |
Как написать билдер на Vc++
/--------------------------------/
/Как написать билдер на VC++/ /--------------------------------/ Очень часто спрашивают на форумах вопрос: "Как написать именно билдер а не конфигуратор?". Если у тебя есть этот же вопрос то читай статью. Немного теории ---------------------- Главное очень часто народ путает понятия конфигуратор и билдер, а для некоторых это вообще одно и тоже. Рассмотрю на примере. Конфигуратор: Вот есть есть например сокс бот. Вы зашли в папку с ботом и там 2 файла например socks.dat и build.exe. В readme написано запустить build.exe и настроить бота как вам нужно. Как же это происходит? Очень просто. В build.exe мы задаём параметры и потом делаем сокс бота, после этого у нас в папке появляется сконфигурированный нами bot.exe. Что делает build.exe: -Открывает файл socks.dat(это уже исполняемый файл просто ему поменяли расширение вручную на dat) -Читает его содержимое в буфер -Ищет в буфере определённые строки и заменяет их на введённые нами -Создаёт навый файл для записи с расширением exe -Записывает туда из буфера уже сконфигурированного нами бота Билдер: Теперь. У вас есть сокс бот. Вы зашли в папку с сокс ботом и там один builder.exe. Вы его запускаете и вводите нужные вам параметры,затем в папке после сборки появляется из неоткуда в папке с билдером уже готовый файл bot.exe который можно пользовать в своих целях. Как это получилось если нету фалйа который можно изменить так как изложено в примере выше? Этому то и посвещена статья. От теории к практике ---------------------------- Билдер работает почти так же как и конфигуратор но бот лежит не в папке а в самом билдере в расурсах. У PE файла есть несколько секций, а это секция кода, секция данных, секция ресурсов и т.д. Вот как раз билдер то и хранит в секции ресурсов бота. Алгоритм сборки бота такой: -Извлекает из секции ресурсов файл в память -Из памяти записывает в обозначенный файл -Открывает файл на запись -Устанавливает указатель по определённому адресу где хранится нужный нам параметр -Заменяет его и если нужно ещё чтото заменить то ставит указатель на другой параметр и тоже заменяет его -Проверяет успешно ли создан файл на диске На первый взгляд страшно это всё звучит, секция ресурсов и всякие указатели. Дальше я всё подробно и просто опишу, приведу исходники, напишу MessageBox билдер и вы увидите что ничего сложного нет а это даже проще чем написать конфигуратор =) Процесс написания MessageBox билдера ---------------------------------------------- Для того чтобы написать MessageBox билдер нам нужен WinHex,файл который вызывает MessageBox,ну и VC++ Сначала пишем файл с MessageBox который будем помещать в ресурсы билдера. Создаём новый win32 проект в VC++ и вставляем туда код: Код:
#include <windows.h> //Здесь подключаем нужные нам заголовочные файлыТеперь нужно изменить пару опций в проекте. Отключаю манифест: Project Property->Linking->Manifest File->Generating Manifest->NO Далее выбираю: Project Property->General Configuration->Character Set->Use Multi-byte Character Set это ставлю чтобы не писать (LPCTSTR)"test" а просто "test" в функции Рантайм библиотеки:Project Property->Configuration properties->c/c++->code generation->runtime library->MT Теперь можно скомпилировать из запустить. Если чтото не запускается или не компилируется ищи ошибку у себя. Открываем в WinHex файл который мы только что получили. Ищем 1_____________________________, это текст нашего сообщения. Можно заменить это сообщения используя WinHex и поиграться с приложением, но нам нужен адрес, а точнее смещение от начала файла.Колонка смещений или offset расположена слева, там написано чтото вроде 0x0000200 и т.д. Ставим курсор точно на 1 и смотрим смещение(offset).Для того чтобы не отсчитывать числа от начала чтроки да ещё и не переводить в hex смотрите смещение по текущему положению курсора,оно нааписано внизу =) Запешите значение. У меня оно равно 24C, а для записи в исходник 0x000024C, затем ищем 2_____________________________, ставим курсор на 2 и записываем смещение. У меня оно равно 26C, а для записи в исходник 0x000026C. Теперь когда известны смещения и всё что нам нужно *** создания билдера есть то можно приступить к сборке. Создаём новый проект MFC Application. Открываем Solution Explorer и ищем там Resource Files. Нажимаем правой кнопкой на файл с расширением .rc и выбираем View code. Для того чтобы добавить файл в ресурсы то нам нужно добавить его туда прописав в файле ресурсов. Синтаксис такой: имя_ресурса тип "файл" Так как у нас не иконка какаято и не картинка для которых есть определённые типы, а exe файл то мы обозначаем тип ресурсов как RCDATA File RCDATA "file.exe" Берём наш exe файл с MessageBox,переименовываем в file.exe и кидаем в папку с проектом где лежат исходники.Теперь заходим в Solutin Explorer и нажимаем правой кнопкой на файле .rc затем Compile. После компилируем проект и наш файл должен добавиться в ресурсы билдера и быть уже в нём. Проверить это можно поискав просто строки 2_____ или 1_____ если есть то значит exe добавлен. Открываем ещё раз Solutin Explorer и нажимаем правой кнопкой на файл с расширением .rc, выбираем open with, затем выбираем Resource Editor и кидаем на форму 2-а EditBox, 2-а label и одну кнопку. После нам нужно создать обработчик события нажатия кнопки по которому будет извлекаться из ресурсов файл и делаться билд. Нажимаем правой кнопкой на button который лежит на форме и выбираем Add Event Handler... Далее выбираем BN_CLICKED и нажимаем OK, теперь вставляем код: Код:
HRSRC hRes = 0; //Это переменнаяЗаключение ------------------ Я думаю теперь общий смсл понятен и теперь вы сможите делать билдеры для любых пинчей и других каких-нибудь лоадеров или ботов. Ведь найдя смещение пожно легко записать в файл всё что нужно. Всё зависит от билда и задай я сообщение в 5 симоволов в фале MessageBox мы бы больше 5-и в билдере и не записали, нет ну записали конечно же но файл бы просто не запустился. Bulder: http://ifolder.ru/3594356 Source: http://ifolder.ru/3594695 WinHex: http://wasm.ru/baixado.php?mode=tool&id=24 Article by: perdimonokl aka 4nob1oz, TGBR.ORG, 2007 |
Цитата:
|
Аптунгдуксимтонмандак. Помоему пошла какая-то волна...
Наплыв. Раньше это был Пинч, как собрать пинч, как протроянить юзера, как прислать пинч, как склеить exe и jpg, а теперь это - как написать билдер, как искать в файле символ "_", как сделать билдер троя, который его из ресурсов распаковывает... Хотя понятно... Кто-то написал такую статью, все сразу прошарились что так можно (гггг) и решили написать такие же свои статьи. Осторожнее! Это может повлечь отупение!!! Епт, помоему и дибилу понятно будет что если в бинарнике есть строка "myhost.ru", то можно вместо нее записать другую строку прямо в бинарник, и ему будет казаться что там была именно такая, новая. Вообщем-то всё, опять я описал все статьи одним предложением. СКОЛЬКО МОЖНО??? Цитата:
Зачем хранить все в ресурсах? Чтоб проще было потом в блокноте поменять кому-нибудь? Или по вышеуказаной причине приходится юзать ресурсы? Нахер получать адрес MessageBox динамически? Это антиотладка типа? Или просто показать что вместо таблицы импорта круче будет написать длинный код? Цитата:
Цитата:
Цитата:
CHAR MESSAGE[] = "1___________..."; ну это конечно просто АААААААААААД ЭТО РАЗРЫВАЕТ МНЕ МОЗГ |
нахрен ресурсы? можно просто работать с массивом, в которому будет бинарник в hex
KEZ у меня описание получилось короче =) |
простейшие операции с файлами+простейшие операции с памятью
ещё короче ну не знаю, опишите там настоящий билдер, от слова "BUILD", т.е. "СТРОИТЬ, СОБИРАТЬ" который будет хотя бы как-нибудь там хранить модули в сжатом виде у себя и из модулей собирать бинарник в памяти, с рендомизацией кода хоть какой-нибудь опишите метод чтоб строки генерились рендомным кодом как-нибудь, или шифровались ну что-то хотя бы чтобы не "БЕРЕМ ФАЙЛ РАСПАКУЕМ И ЗАПИШЕМ ПО АДРЕСУ 123 СТРОКУ helo world" Цитата:
|
боян
Кто переплюнет? |
бая
|
4nob1oz, где берешь такую траву?
тема бред кез подробно разъяснил почему и я не могу с ним несогласиться.. |
Всем кто ответил, парни вам респект :) Я думаю после этих постов в вас станет дерьма на капельку меньше. Я написал на сколько знаю и расписал на столько на сколько считаю нужным. Щас ради интереса ваши статьи почитаю.
Тут один КЕЗ написал что ктото говорит написал подобную статью и все начали писать. Жду линков хотя ты не всё равно не ответишь конечно же на этот пост и не найдёшь ланков на подобные статьи. To Great: хеллы тру ;) а вот мог бы и минус не ставить, хотя мне пофиг плюс или минус Без обид чувак но чтото ты заговнился последнее время :( |
Простите, а где там билдер? Помойму это конфигуратор хранящий файл в ресурсах. Или же это все грибы виноваты?
|
| Время: 12:35 |