Показать сообщение отдельно
  #1  
Старый 11.12.2006, 11:07
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
Восклицание Замена ресурсов в Pe файле

Написал DLL на сях, которая позволяет программно заменять ресурсы в PE файлах.

Пример использования в Delphi:
Код:
type
  TReplaceResource = function(sSource,sDest,sType,sName: PChar): Boolean; stdcall;

...
  TMainForm = class(TForm)
...

procedure ReplRes();
var
  ReplaceResource:    TReplaceResource;

begin

  if not ReplaceResource(PChar('c:\resfile.dat'),PChar('c:\pefile.exe'),RT_RCDATA,'DATA') then
  begin
    MessageBox(Handle,'Internal Error!',Caption,MB_ICONERROR);
  end;

end;

Пример писал по памяти, могут быть ошибки.
Описание самой функции:

TReplaceResource = function(sSource,sDest,sType,sName: PChar): Boolean; stdcall;

sSource - любой файл,
sDest - любой PE файл (exe,dll,ocx, и т.д.)
sType - тип ресурсов (RT_RCDATA, RT_BITMAP, RT_STRING и т.д.)
sName - имя,под которым будет сохранен ресурс

По-идее, процедура должна ЗАМЕНЯТЬ УЖЕ СУЩЕСТВУЮЩИЙ ресурс на новый, но я не пробовал использовать ее для добавления нового, может
быть,тоже будет работать.

Возвращает буленовое значение, как индикатор ошибок (если были ошибки - вернет false, если все прошло успешно - вернет true)

Также, для программного редактирования ресурсов, можно использовать
API методы (их описание смотрите в SDK или в дельфовом хэлпе):

BeginUpdateResource
UpdateResource
EndUpdateResource

Почему я написал DLL на сях с использованием этих API, а не стал использовать АПИ через Делфи? Да потому, что я пробовал через Делфи, но код упрямо отказывался работать, если у кого получится на Делфи реализовать замену\добавление\редактирование ресурсов - буду очень рад этому.
Исходники и сама DLL в аттаче.
Вложения
Тип файла: zip ResDll.zip (17.0 Кбайт, 66 просмотров)
Тип файла: zip ResDll_SOURCE.zip (7.8 Кбайт, 79 просмотров)
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием