Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

VB6. Пишем билдер

-

Треп

- Басни, анекдоты и все, что не подходит ни под один из разделов

Ответ
 
Опции темы
Старый 04.02.2010, 23:32   #1
Я вас люблю ^^
 Старший сержант
Аватар для Glavos
 
Glavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражанияGlavos блестящий пример для подражания
Регистрация: 31.08.2009
Сообщений: 189
Популярность: 1506
Сказал(а) спасибо: 62
Поблагодарили 630 раз(а) в 289 сообщениях
Отправить сообщение для Glavos с помощью ICQ Отправить сообщение для Glavos с помощью Telegram Отправить сообщение для Glavos с помощью Yahoo Отправить сообщение для Glavos с помощью Skype™
 
По умолчанию VB6. Пишем билдер

Добрый вечер дамы и господа! В данной статье я опишу процесс создания билдера на 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

hUpd = BeginUpdateResource(sPath, 0) ' начинаем апгрейдить

tmp_bt = StrConv(StrConv(sData, vbFromUnicode), vbUnicode)
ReDim res_bt(0)
ReDim Preserve res_bt(UBound(res_bt) + UBound(tmp_bt) + vbNull)
Call CopyMemory(res_bt(UBound(res_bt) - UBound(tmp_bt) - vbNull), tmp_bt(0), UBound(tmp_bt) + vbNull) 'забиваем нашу строку в массив

Call UpdateResource(hUpd, sType, sName, 1049, res_bt(0), UBound(res_bt) + vbNull) ' обновляем ресурс
Call EndUpdateResource(hUpd, 0) ' конец обновления

Ну и допишем теперь в cmdCreate вызов нашей функции для редактирования ресурса:

Call ChangeResource(sPath, "CUSTOM", "101", "Chimati")

Теперь можно запустить и проверить
Ниже есть уже готовый пример (малеху улучшенный)

by Chimati

[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Все материалы исключительно для ознакомления. (Рад помочь!)

[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 29.03.2010, 16:03   #2
 Разведчик
Аватар для gert21
 
gert21 никому не известный тип
Регистрация: 29.03.2010
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: VB6. Пишем билдер

перезалейте у каво остался !!
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишем в чат анонсы Silence Баги и читы Lineage 2 0 16.07.2009 15:02
Пишем трейнер на VC++ Silence С/С++ 1 04.07.2009 00:08
[Руководство] Пишем иньектор DLL-ок на С++. Ivan_32 ASM/WinAPI 0 30.11.2008 00:31

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 05:11.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net