Подмена ресурсов on-the-fly, возможно ли?

Тема в разделе "WASM.BEGINNERS", создана пользователем DruID, 10 ноя 2005.

Статус темы:
Закрыта.
  1. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Предистория: Я нашел программу InLocate (раньше RapidTranslation), она типа позволяет делать on-the-fly,

    Посмотрел, позволяет, НО не ресурса, а только текста и только для Menu, Dialog, String.

    Я понимаю в ней используется FindWindow, FindWindowEx, SendMessage SetWindowText, GetWindowText и др. аналогичные.

    Так, что реально InLocate, не подменяет ресурс.



    Так вот, вопрос: Есть ли программы и готовые решения, которые будут подменять любой ресурс на лету?

    Типа есть программа zzz.exe c всякими ресурсами (Menu, Dialog, String, RCData, HTML, XML, SPLA, BIN и др), для нее создаем

    отдельный файл ресурсов, назовем его zzz_mod.dll (где эти же ресурсы, только подправленные). Далее запускаем zzz.exe, видимо через какой-то launcher.exe, который заставляет zzz.exe брать ресурсы не из себя, а из zzz_mod.dll.



    Если таких готовых программ - нет, то возможно ли реализовать это на практике?
     
  2. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    можно , а на хрена это надо ?

    про restorator неслышал никогда ?
     
  3. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    ему же налету нужно, вроде через перехват функций
     
  4. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20


    Надо, для программ с всякими защитами от модификаций, а также для запакованных\закриптованых и тд.





    знаю, пользуюсь и не только им.
     
  5. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    ну ладно идея такая

    делаешь стаб для длл то есть экспортишь все функции

    которые она экспортирует.



    в неё записываешь ресурсы нужные тебе



    при вызове фенкций пренаправляшь их на исходную dll
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    staier

    У него ресурсы уже в ехе. Тут нужно подгружать dll со своими ресурсами и подставлять в функции ресурсов вместо hModule ехе hModule подгруженной библиотеки.
     
  7. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Нашел решение,

    надо перехватывать и подменять FindResource или LoadResource,

    щас буду думать как это сделать...
     
  8. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    была уже тема такая

    поищи
     
  9. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Сделал, но почему-то не работает, мож где-то ошибка???

    Делал так: Создаю процесс, внедряю длл, в ней хуки на FindResourceA и LoadResource.

    Дальше в длл:

    ...

    Handle:=LoadLibrary('mod_res.dll'); //здесь ресурсы

    ...



    function NewFindResourceA(Instance: THandle; Name, ResType: PChar): THandle; stdcall;

    ...

    begin

    Modres := TrueFindResourceA(Handle, Name, ResType);

    Result := TrueFindResourceA(Instance, Name, ResType);

    end;



    ...

    function NewLoadResource(Instance, ResInfo: THandle): THandle; stdcall;

    begin

    if Modres=0 then Result:= TrueLoadResource(Instance, ResInfo);

    else Result:= TrueLoadResource(Handle, Modres);

    end;

    ...



    В итоге выдается ошибка "Stream read error", в чем дело не пойму.
     
  10. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Разобрался, всем спасибо!
     
Статус темы:
Закрыта.