Страница: 1 |
Страница: 1 |
Вопрос: Как програмно добавить ресурс?
Добавлено: 29.05.05 08:42
Автор вопроса: magish
Подскажите, пожалуйста, какой функцией (API) можно добавить ресурс (файл) в уже готовый EXE?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #1
Добавлено: 29.05.05 10:50
Насчет API-функций не знаю. А так, есть полно программ (к примеру, PE Explorer), которые добавляют ресурсы в готовые EXE
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 29.05.05 12:59
BeginUpdateResource
The BeginUpdateResource function returns a handle that can be used by the UpdateResource function to add, delete, or replace resources in an executable file.
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 29.05.05 16:42
BeginUpdateResource, UpdateResource, EndUpdateResource
Вообще сложная муть, вроде ещё ни укого не получалось.
Номер ответа: 4
Автор ответа:
ism
ICQ: 237575486
Вопросов: 5
Ответов: 4
Профиль | | #4
Добавлено: 30.05.05 03:04
У меня этот код работает:
Dim txt As String
h = BeginUpdateResource("c:\1.exe", 0)
txt = "Текст"
Call UpdateResource(h, "TEXT", "1", 1049, ByVal txt, Len(txt))'1049 - язык
Call EndUpdateResource(h, 0)
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 30.05.05 03:47
действительно воркает на ура
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 30.05.05 05:45
Хм... ещё как воркует !!! спасибо ism !!!
Номер ответа: 7
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #7
Добавлено: 30.05.05 20:16
2ism: супер! А где ты его раздобыл?
Номер ответа: 8
Автор ответа:
magish
Вопросов: 47
Ответов: 47
Профиль | | #8
Добавлено: 31.05.05 19:17
Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Integer, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Integer, ByRef lpData As Object, ByVal cbData As Integer) As Integer
Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Integer, ByVal fDiscard As Integer) As Integer
Sub Main()
Dim h As Long
Dim txt As String
h = BeginUpdateResource("d:\temp\1.exe", 0)
txt = "Mad123"
Call UpdateResource(h, "TEXT", "1", 1049, ByVal txt, Len(txt))
Call EndUpdateResource(h, 0)
End Sub
пишет что не совпадение типов... - если поменять lpData как String - ни че не делает... - не добовляет... - или в файле(1.exe) надо, объект(папка, подпапк - не знаю как называеться) чтоб "TEXT" был создан???
Номер ответа: 9
Автор ответа:
ism
ICQ: 237575486
Вопросов: 5
Ответов: 4
Профиль | | #9
Добавлено: 01.06.05 08:10
Я объявлял как в API Viewer, lpData As Any
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 01.06.05 21:59
может
Call UpdateResource(h, "CUSTOM", "1", 1049, ByVal txt, Len(txt))
?