Добрый вечер дамы и господа! В данной статье я опишу процесс создания билдера на Visual Basic 6.
1. Что такое билдер и на кой фиг он нужен?
Билдер - программа, которая выдаст другую, настроенную по вашему желанию,
не используя при этом компилятора (пример - Pinch). Работать с такой штукой удобно: расставил галочки, заполнил поля, нажал создать и вот он - готовый троян. А как же написать такое самому?
Принцип прост - сначала напишем программу, которая будет считывать данные из себя же, потом напишем прогу которая эти данные меняет.
2. Кодинг.
Сначала напишем прогу, которая считывает из себя данные, а именно ресурсы.
Откроем vb6, создадим обычный проект, щелкнем по форме и напишем в Form_Load следущее:
a = LoadResData("101", "CUSTOM")
Msgbox a
Ф-ция LoadResData считывает данные из ресурса, где 101 - идентификационный номер, а CUSTOM - его тип. Ф-цией MsgBox мы их покажем. Скомпилируем Проект1.exe
Теперь напишем сам билдер: создадим новый проект, откроем окошко кода и объявим следующие api:
Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Ф-ции BeginUpdateResource, UpdateResource, EndUpdateResource нужны для редактирования ресурсов, CopyMemory - оч удобная функция для копирования массивов.
Дальше добавим наш Проект1.exe к нашему билдеру, запихнув его в ресурсы. Выберем в меню Дополнения > Менеджер дополнений > Resource Editor. Щелкнем в инструментах Resource Editor. Там нажмем на кнопочку Add Custom Resource (вторая справа) и добавим наш Проект1.exe, обозначив его тип как "SFX" а имя как "EXE". Щелкнем по кнопке Save.
Вернемся к форме нашего билдера. Кинем на нее кнопку cmdCreate и запишем в процедуру CliCk следущее:
Dim sPath As String, bin_data() As Byte, nf As Integer
Open "c:\proga.exe" For Binary Access Write As nf
bin_data = LoadResData("EXE", "SFX")
Put nf, , bin_data
Close nf
Erase bin_data
Теперь пояснение: Здесь мы открываем файл c:\proga.exe для бинарного доступа и пихаем туда наш Проект1.exe из ресурсов. Да, файл создали но ресурсы нигде не редактировали, щас исправим
Для удобства я добавил следующую функцию:
Private Sub ChangeResource(sPath As String, sType As String, sName As String, sData As String)
Где sPath - путь к редактируемому фалу, sType - тип ресурса, sName - имя ресурса и sData - данные. Теперь сама функция:
Dim hUpd As Long, res_bt() As Byte, tmp_bt() As Byte