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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подмена ресурсов, UpdateResource для всех версий Windows 
:(
    Опции темы
Kondragor
Дата 14.9.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.11.2004

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



Прошу test.rar
PM MAIL   Вверх
Alex
Дата 14.9.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не компилируя тестовый проект, запустил его и у меня все спокойно достали.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
SergeBS
Дата 15.9.2005, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 22



Kondragor
Resource Hacker
Из exe/dll - иконки выдирает. редактировать и т.п. - не пробовал.
Сходи еще на download.ru - там наверняка тоже есть такое.
Добавлено @ 11:02
Kondragor
Вдогонку
Resource Hacker 3.4.0.79 - 24.03.2002 - в архиве rar - 450 K. НО быстро выслать не обещаю - отпуск, однако.

PM MAIL   Вверх
Alex
Дата 15.9.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



SergeBS, а немного тему почитать и понять, что человеку это программно нужно сделать...


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Guest
Дата 7.10.2005, 05:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хочу кое что заметить. Во-первых, Alex, измени код правильно, ошибка кода в топике
Код
function DeleteResourceW(exeFile, type_, name: PWideChar; language: word): BOOL; stdcall;    
// Eдаление ресурса    
// exeFile - Путь к файлу, из ресурсов которого удаляется файл    
// type_   - Тип ресурса (Большими буквами)    
// name    - Имя ресурса (Большими буквами)    
var    
  hUpdateRes: THandle;    
begin    
  Result:= False;    
  hUpdateRes:= BeginUpdateResourceW(exeFile, False);    
  if hUpdateRes <> 0 then if UpdateResourceW(hUpdateRes, type_, name, language, nil, [color=red]nil[/color]) then    
    Result:= EndUpdateResourceW(hUpdateRes, False);    
end;

Во-вторых, обнови уже свой файл в инете, а то вот классную функцию дописал, а в модель не добавил smile
Ну и в-третьих: может все же кто-нить подскажет как узнать список всех ресурсов в файле?
  Вверх
Alex
Дата 7.10.2005, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



как только будет время займусь. если очень не терпится, кто мешает сделать вам это самостоятельно?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
mefik
Дата 1.12.2005, 16:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как стандартный тип ресурса использовать?
Например RT_VERSION

Пробовал StringToPWide(RT_VERSION)
нифига не получается....

Код

    hRes := BeginUpdateResourceW('temp.exe', False);
    GetResourceW(hRes, StringToPWide(RT_VERSION), '1', 1049, P, C);
    if P <> nil then ShowMessage(PWideToString(PWideChar(P))) else ShowMessage('error');
    EndUpdateResourceW(hRes, True);


Стандартной функцией VerQueryValue получается, но мне надо после считывания, еще изменить пару строчек.
просто VS_VERSION_INFO блок, единственный, который upx не упаковывается...
  Вверх
allx
Дата 19.4.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 1.9.2005

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



Alex
Расскажите плиз как достать и изменить ну например строку в екзешнике используя данный модуль... код следующий:

Код

procedure TForm1.FormShow(Sender: TObject);
var
  fn: string;
  hUpdateRes: THandle;
  buffer: array[0..4097] of byte;
  pbuffer: pointer;
  bufsize:Cardinal;
  pw: pwidechar;
begin
  OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
  if OpenDialog1.Execute then begin
     if FileExists(OpenDialog1.FileName) then begin
        fn:=OpenDialog1.FileName;
        hUpdateRes:= BeginUpdateResourceW(StringToPWide(fn), FALSE);
        GetResourceW(hUpdateRes, PWideChar(RT_STRING),'65', $0409, pbuffer, bufsize);
        EndUpdateResourceW(hUpdateRes, FALSE);
     end;
  end;
end;


Ссылку на буффер функция не возвращает, размер тоже.  Я вот еще не уверен, что за Name, третьий параметр GetResourceW(). Я правильно полагаю что это имя ветки? 

Это сообщение отредактировал(а) allx - 19.4.2006, 10:33
PM MAIL   Вверх
Alex
Дата 19.4.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



allx, я скажу так, как доставать и изменять строки хранящиеся в ресурсах я не знаю smile  


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
allx
Дата 19.4.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 1.9.2005

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



Alex
Чьерт )) Как достать строку я более-менее разобрался. Скорее менее чем более. Итак.

Код

Procedure TForm1.RenameResourceStrings(FileName: string);
var
  hUpdate : THandle;
  hMui : HMODULE;
  Data : WideString;
  Data2: String;
  ResInfo : HRSRC;
  ResData : HGLOBAL;    
  Adr : Pointer;
  Size : DWORD;
  b: boolean;
  li:TListItem;
  ii, i: integer;
  ResNames: TStrings;
  function enumResNamesProc(module: HMODULE; restype, resname: PChar; list: TStrings): Integer; stdcall;
  begin
   if HiWord(dword(resname)) <> 0 then
     list.Add(resname)
   else
     list.Add(inttostr(dword(resname)));
   Result := 1;
  end;
begin
  hMui := LoadLibraryEx(PAnsiChar(FileName),0,LOAD_LIBRARY_AS_DATAFILE);
  if hMui = 0 then Exit;
  ResNames:=TStringList.Create;
  EnumResourceNames(hMui, RT_STRING, @enumResNamesProc, dword(ResNames));
  for i:=0 to ResNames.Count-1 do begin
    li:=ListView1.Items.Add;
    li.Caption:=ResNames[i];
    ResInfo := FindResource(hMui, pansichar(strtoint(ResNames[i])), pansichar(RT_STRING));
    ResData := LoadResource (hMui, ResInfo);
    Adr := LockResource (ResData);
    Size := SizeofResource (hMui, ResInfo);
    SetLength(Data, Size div 2);
    CopyMemory (@Data[1], Adr, Size);
    data2:='';
    for ii := 1 to length(data) do begin
        if ord(Data[ii])<30 then
           data2:=data2+'[0x' + IntToHex(ord(Data[ii]),2)+']'
        else data2:=data2+data[ii];
    end;
    li.SubItems.Add(Data2);
  end;
  ResNames.Free;
  FreeResource(ResData);
  FreeLibrary(hMui);
end;


Код теперь работает. Остается открытым вопрос, как изменить строки...  И почему парсинг строковых ресурсов во всяких PE Explorer, ResHacker, XN ResourceEditor, Restorator и иже с ними мягко говоря отличается от того что получается  у меня.... 

Это сообщение отредактировал(а) allx - 19.4.2006, 22:25
PM MAIL   Вверх
allx
Дата 19.4.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 1.9.2005

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



Народ, давайте вместе добьем эти несчастные строки... имхо будет хорошим дополнением к AcWorkRes ))

 c форматом итоговых строк разобрался - 
1) 1 байт размера элемента строки
2) строка соотв. размера
3) 1 байт размера элемента строки
4) строка соотв. размера
итд 

Это сообщение отредактировал(а) allx - 19.4.2006, 22:46
PM MAIL   Вверх
allx
Дата 20.4.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 1.9.2005

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



ну я собсно разобрался в этой канители.  как отлажу код - отпишусь наверное. 

обновлять ресурсы оказалось довольно просто:

Код

    hMui:=BeginUpdateResource(PAnsiChar(FileName),true);
    UpdateResourceW(hMui,pwidechar(RT_STRING),pwidechar(strtoint(ResNames[i])),1033,@Data,Size);
    EndUpdateResource(hMui,false);
 
PM MAIL   Вверх
Budy
Дата 13.6.2006, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 616
Регистрация: 6.2.2004
Где: Екатеринбург

Репутация: 1
Всего: 2



Alex, и все же ждем процедуры "Show_List_Of_All_Resources_In_File" smile 


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
Dino99rus
Дата 4.4.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 10.1.2007

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



 LoadFileToResourceW исполбзую эту функцию все ок.
Но вот с использованием SaveFileToDiscW не получаеться. Он не создает файл из ресурса, а вообще как после LoadFileToResourceW загрузить файл в мемо. Не понимаю объеснити плиз
PM MAIL   Вверх
Dino99rus
Дата 5.4.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 10.1.2007

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



Все броблему решил smile 
PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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