Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вставить в ресурсы чюжово файла exe фаил? Как вставить. 
V
    Опции темы
Ak47black
  Дата 23.1.2006, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Привет всем.
Сталкнулся с проблемой - как вставить в ресурсы чюжово файла exe фаил или поменять там уже сушествуюший exe.
Подскажите как реализовать.
PM MAIL   Вверх
_hunter
Дата 23.1.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



тебе это самому сделать нужно ( своей программой ) или любая подойдет?

P.S.
ты в курсе что этот вставленный exe-шник запускаться всеравно не будет?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 23.1.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Цель?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ak47black
Дата 23.1.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Мне просто нужно поменять exe ресурс на свой exe ресурс , (запуск ненужен); smile При помоши своёй проги.

Это сообщение отредактировал(а) Ak47black - 23.1.2006, 21:26
PM MAIL   Вверх
Snowy
Дата 24.1.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



тебе уже в готовую программу запихивать нужно, или на стадии компиляции?
PM MAIL   Вверх
Ak47black
  Дата 24.1.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Цитата(Snowy @ 24.1.2006, 10:30)
тебе уже в готовую программу запихивать нужно, или на стадии компиляции?

В уже скомпилированный фаил который на harde валяется. smile
PM MAIL   Вверх
MIX55
Дата 24.1.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

Репутация: нет
Всего: 4



вот раз
"Пакер"
вот два
"Анпакер"

Модератор: Вырезано, как мусор
--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
Snowy
Дата 24.1.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



 Ну не нужно постить сюда всякую псевдо XAKEPCKYI0 ерунду.
Только лишнее доказательтво ламерства псевдокодеров журнала "хакер".
 Добавлено @ 11:55 
Вот, нарисовал код.
Добавляет ресурсы в существующий exe и т.п. файл, который может содержать ресурсы.
Пример добавляет данные в RC_DATA для русского языка. Но можно модифицировать под другие нужды.
Код

function AddResource(FileName, ResName: string; Buf: pointer; Size: integer): integer;
{* Добавляет данные в RC_DATA. На входе:
   FileName - имя файла с ресурсами (exe, dll и т.п),
   ResName  - имя ресурса (ОБЯЗАТЕЛЬНО! заглавными латинскими буквами),
   Buf      - указатель на блок данных, Size - размер блока данных.
   На выходе - 0, если все Ok, либо номер ошибки Windows }
var
  Hnd: THandle;
begin
  Hnd := BeginUpdateResource(PChar(FileName), false);
  if Hnd=0 then begin
    result := GetLastError; Exit;
  end;
  if UpdateResource(Hnd, RT_RCDATA, PChar(ResName), 1049, Buf, Size) then
    result := 0
  else result := GetLastError;
  EndUpdateResource(Hnd, (result<>0));
end;

function AddFileToExe(ExeName, FileName, ResName: string): boolean;
{* Добавляет любой файл в ресурсы. На входе:
   ExeName  - Путь к файлу с ресурсами,
   FileName - Путь к файлу, который запихнуть в ресурсы,
   ResName  - Под каким именем сохранить в ресурсах. ОБЯЗАТЕЛЬНО! заглавные латинские }
var
  fs: TFileStream;
  b:  pointer;
begin
  try
    fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
    GetMem(b, fs.Size);
    fs.Read(b^, fs.Size);
    result := AddResource(ExeName, ResName, b, fs.Size)=0;
    fs.Free;
    FreeMem(b);
  except
    result := false;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
{* Пример использования.}
begin
  if AddFileToExe('C:\1.exe','C:\2.exe', 'NEWEXERES') then
    ShowMessage('Готово')
  else ShowMessage('Не получилось');
end;

 Добавлено @ 11:58 
P.S. Чтобы постить для других языков, нужно заменить 1049 на код другого языка, или заменить на 0.
Чтобы постить в другую секцию, замените соответственно RC_DATA на нужную вам.
В примере RC_DATA, т.к. туда кладется все, что не типизировано (т.е. не картинки, ни иконки и т.п.)
 
PM MAIL   Вверх
Ak47black
Дата 24.1.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Snowy - спасибо за ЕДИНСТВЕННЫЙ норм ответ. smile
PM MAIL   Вверх
Alex
Дата 25.1.2006, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Snowy, все хорошо, только есть два ньюанса:
1. Функция UpdateResource есть только в NT системах, а у нас к сожелению еще не мало машин с 9x системами
2. Не знаю как на счет ресурсов типа RS_DATA, но с ресурсами типа RS_ICON UpdateResource работала ужасно (последний раз проверял около года назад)

Что бы всего этого избежать и пришлось мне в свое время писать модуль http://vingrad.ru/DELPHI-SRC-000003
Добавлено @ 02:32
Описание модуля и примеры работы так же есть вот в этой теме http://forum.vingrad.ru/index.php?showtopic=21183&amp;st=0


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.