|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 26, 2004 00:04:23 bogrus > KAV не ругаитца :) , об других антивирях интересно услышать. Каспер ругаитца и ещё как, ибо других антивирей не держим. Хошь выложу calc.exe от XP, в котором я в секцию ресурсов добавил немножко кода, Каспер сказал что файл подозрительно похож на вирус :-) хотя возможно твой файл у него и не вызывает подозрений ;-) |
|
|
Дата: Авг 26, 2004 03:43:39 Asterix > ведь никто не мешает сделать в файле всего одну секцию, обозвать ее .rsrc Дык с этим никто не спорит. Проблема в том, что если делать по другому, то работает не всегда. :-) bogrus > Тогда мне не понятно , почему PE Explorer на них злиться IMHO глючный он! Потому что не вычисляет адрес для каждого ресурса в отдельности через их каталог, а полагается на их определённый порядок в файле. Если используется кампиляторы ресурсов, то этот порядок строго определён. Я же писАл про PEview - он тоже не всё корректно обрабатывает. Автор так и ответил - никогда просто не видел подобного строения директории, хотя с точки зрения формата, она правильна. > Я не могу найти такого упоминания Я немного не так выразился. Стр. 60, 6.8. The .rsrc Section: The general structure of the .rsrc section is: ---------------------------------------------------------------------- -------------------- Data | Description ---------------------------------------------------------------------- -------------------- Resource Directory Tables (and | A series of tables, one for each group of nodes in the Resource Directory Entries) | tree. All top-level (Type) nodes are listed in the first table.Нигде не сказано, что ресурсы могут находиться где-то ещё кроме указанной секции. > Пропадает отображение Version_Info по правому клику , если ресурсы находяться не в начале секции . Я слегка подправил аттач, теперь version info видно. Таблицы IMAGE_RESOURCE_DIRECTORY Language с LANG_NEUTRAL для иконки можно бы и убрать совсем, но стандартные макросы FASM это не позволяют вроде бы. Для Version Info и других строковых - наличае бязательно. Это в общем-то логично, хотя судя по спецификации директории ресурсов - не обязательно. > И побочная проблема , а может и нет.. Я бы сказал, это проблема не наща :-) It's not a bug, it's a feature! 722204859__project.asm |
|
|
Дата: Авг 27, 2004 00:22:49 Вся проблема в LOAD_LIBRARY_AS_DATAFILE и в RVA Offset to Data из IMAGE_RESOURCE_DATA_ENTRY . Если модуль с ресурсами был загружен как DATAFILE , то эти RVA можно было бы увеличить на размер того , что мы напихали перед ресурсами в этой одной секции , тогда работает . Может будет понятней на макросе Resource.inc : macro version label,fileos,filetype,filesubtype,lang,cp,[name,value]
{ common
local data,size,vivalue,visize
label dd RVA data,size,0,0 Т.е. сделать RVA data+sizeof.напиханое или , что ещё хуже , уменьшить RVA таблицы ресурсов в PE хидере (например было 0040105Bh , а поставить 00401000h) , тогда версия отображеться (но сам файл не грузиться :)
А по правом клику (для Version Info) модуль загружаеться именно как DATAFILE . Но иконка файла ищеться через SHGetFileInfo , а там модуль загружаеться как обычно , если также исправить макрос и для иконок , то RVA уже будут не те и иконка пропадёт . Палка двухконцовая , короче лучше делать ресурсы в начале секции и не е.м. А всё потому , что в дубовом LoadResource при расчёте учавствуют эти RVA , начало секции и смещение таблицы ресурсов . А они и не сходяться , т.к. есть разница грузить файл (как есть на винте) тупо в память например по адресу 40000h , или грузить PE header по 40000h , а секцию по 401000h . |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.057 |