PEAnatomist - внутренности PE-файлов

RamMerLabs

Ordo ab chao
Наставник
Сообщения
11
Реакции
10
За пример спасибо, попозже посмотрю.

...Поэтому пользователю достаточно было показать только закладку Цепь, а остальные 5 закладок с обработчиками просто сделать невидимыми. Тоже самое с закладками, показывающими внутренности данных для обработчика - зачем при этом видеть закладку "Цепь" и другие типы обработчиков я не понимаю.
Тут как раз всё просто. Например нужно просмотреть информацию о тех же цепях, выбрали вкладку "Цепь" и знай себе щёлкай клавишу "вниз" в верхнем (общем) списке. Даже если для какой-то записи информации о цепях не будет - вкладка не переключится на другую ("коды раскрутки" или "содержание" в минимальном виде) из-за того, что вкладка "Цепь" была скрыта из-за отсутствия соответствующей инфы. Конечно, можно запоминать последнюю вкладку и переключать, но что если после очередного перехода вкладка была переключена намеренно например на "Содержание" - тогда после восставновления запомненной вкладки её придётся снова переключать. Поэтому весь набор вкладок был оставлен намеренно как есть для сквозного просмотра.
Согласен, что все вкладки с инфой о "языко-зависимых" данных EH отображать нет нужды - в единый момент времени актуальна будет только одна или вообще ни одной, однако выше я пояснил, что эти вкладки пока тянутся как legacy-поведение (если можно так выразиться) и ещё не готовы к значительной переделке.
 

dermatolog

Новичок
Ветеран
Сообщения
7
Реакции
1
Я не понимаю что такое "запомненные закладки". Свалите все гриды на одну закладку, затем после выбора итема в верхней части просто меняйте заголовок этой закладки на нужный в зависимости от того какую структуру распарсили ("Цепь" , "SEH Scope" и т.д.). У ненужных гридов просто отключайте видимость.

P.S. Показ ресурсов тоже выглядит очень странно. В разделе "Ресурсы" идет список самих ресурсов, а в "Заголовки ресурсов" идет развернутое дерево ресурсов с теми же ресурсами внутри. Вот интересно кто-то вообще понимает что он видит в разделе "Заголовки ресурсов"? А это обычное дерево! И опять теже самые проблемы с пустыми элементами GUI - зачем рисовать грид на 11 колонок, если по каждой строчке в гриде из них задействовано максимум 4?
 

RamMerLabs

Ordo ab chao
Наставник
Сообщения
11
Реакции
10
P.S. Показ ресурсов тоже выглядит очень странно. В разделе "Ресурсы" идет список самих ресурсов, а в "Заголовки ресурсов" идет развернутое дерево ресурсов с теми же ресурсами внутри. Вот интересно кто-то вообще понимает что он видит в разделе "Заголовки ресурсов"? А это обычное дерево! И опять теже самые проблемы с пустыми элементами GUI - зачем рисовать грид на 11 колонок, если по каждой строчке в гриде из них задействовано максимум 4?
Ну нету у меня самописного TreeListView, подходящего для использования в этой программе!
И я совсем не хочу повторять то, как та же вкладка о ресурсах реализована в других аналогичных программах.
Поэтому GUI всё равно останется без значительных изменений возможно до версии 1.0.0 :)
 

RamMerLabs

Ordo ab chao
Наставник
Сообщения
11
Реакции
10
Свалите все гриды на одну закладку, затем после выбора итема в верхней части просто меняйте заголовок этой закладки на нужный в зависимости от того какую структуру распарсили ("Цепь" , "SEH Scope" и т.д.). У ненужных гридов просто отключайте видимость.
Я Вас услышал, кое-какие идеи в todo записал. Но не обещаю быстрого решения из-за некоторых внутренних ограничений/особенностей работы с табами и планируемых нововведений (ещё одна вкладка с другим типом информации касательно EH).
 

dermatolog

Новичок
Ветеран
Сообщения
7
Реакции
1
@RamMerLabs,

Хотел спросить - вы встречали на практике файлы с FuncInfoHeader.isSeparated?
 

dermatolog

Новичок
Ветеран
Сообщения
7
Реакции
1
Если отображается лишь RVA обработчика, значит имя определить не удалось - либо это нестандартный обработчик, либо какие-то "некомпиляторо-написанные" данные выходят за известные программе границы. Некоторые подобные данные едва ли вообще можно корректно распознать без отладочных символов.
Ах вот оно что! Я почему-то подозревал, что вы определяете тип структуры по имени обработчика из отладочных символов :))
 

RamMerLabs

Ordo ab chao
Наставник
Сообщения
11
Реакции
10
@RamMerLabs,

Хотел спросить - вы встречали на практике файлы с FuncInfoHeader.isSeparated?
Встречал, их полно.

Ах вот оно что! Я почему-то подозревал, что вы определяете тип структуры по имени обработчика из отладочных символов :))
Нет, не угадали, читайте внимательнее цитируемый ответ. Используемый мной способ определения типа обработчика EH я Вам обрисовывал ранее.
В цитируемом Вами ответе речь идёт о невозможности корректного детекта типа __отдельных__ обработчиков EH иначе как по debug'ам, т.е. для таких структур нет подходящих индикаторов внутри PE. Тот же clang (хоть в виде самостоятельного продукта, хоть в форме бекенда к VC++) часто ставит свой обработчик, со своей структурой данных в UnwindData, а иногда и вовсе без них - генерируя на каждую функцию отдельный обработчик исключений, тогда кроме RVA обработчика (ну и кодов раскрутки конечно) в UnwindData ничего нет, всё что нужно вписано внутри функлета обработчика.

PS: ещё раз спасибо за пример с отложенным импортом, ошибку в программе исправил.
 

RamMerLabs

Ordo ab chao
Наставник
Сообщения
11
Реакции
10
Примером не поделитесь?
Самый простой и доступный пример - любой из приблизительно четверти PE в system32, начиная примерно с 19018 сборки. Всякие windows.storage.dll, edgehtml.dll, CoreUIComponents.dll и т.д.
 
Верх Низ