Посл.ответ |
Сообщение |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 28 июня 2020 14:40 · Личное сообщение · #1
Привет ребята. Подскажите пожалуйста в каком формате хранятся эти данные в PE файле. В RC DATA накиданы ресурсы начинающиеся с TPF0, не могу найти их структуру что бы прочитать.
| Сообщение посчитали полезным: |
|
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 28 июня 2020 15:13 · Личное сообщение · #2
binary dfm
| Сообщение посчитали полезным: |
Ранг: 17.6 (новичок) Активность: 0.01=0.01 Статус: Участник
|
Создано: 28 июня 2020 15:17 · Личное сообщение · #3
1. использовать <View as Text> IDE 2. Для самостоятельной обработки используют Смотри модуль Classes procedure ObjectBinaryToText(Input, Output: TStream; var OriginalFormat: TStreamOriginalFormat); procedure ObjectTextToBinary(Input, Output: TStream);
| Сообщение посчитали полезным: |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 28 июня 2020 16:22 · Личное сообщение · #4
vitokopЯ не могу воспользоваться этим, я пишу не на Delphi. Все что мне нужно вывести информацию в текстовом виде. Для этого надо знать структуру в которой содержаться данные в ресурсе PE.
| Сообщение посчитали полезным: |
Ранг: 512.7 (!), 360thx Активность: 0.27↘0.03 Статус: Модератор
|
Создано: 28 июня 2020 16:56 · Личное сообщение · #5
утилита IDR https://github.com/crypto2011/IDR
| Сообщение посчитали полезным: |
Ранг: 73.1 (постоянный), 130thx Активность: 0.04↗0.23 Статус: Участник
|
Создано: 28 июня 2020 17:16 · Личное сообщение · #6
sendersuтак она в конечном итоге на ту же ObjectBinaryToText выходит  >>Resources.cpp void __fastcall TResourceInfo::GetFormAsText(TDfm* Dfm, TStrings* DstList) { TMemoryStream *memStream = new TMemoryStream; memStream->Size = Dfm->MemStream->Size; Dfm->MemStream->Seek(0, soFromBeginning); ObjectBinaryToText(Dfm->MemStream, memStream); memStream->Seek(0, soFromBeginning); DstList->LoadFromStream(memStream); delete memStream; }
Может быть есть смысл порыться с сырках lazarus? Вобщем-то формат незамысловатый: сигнатура + array(длина имени свойства, имя свойства, флаги свойства, значение свойства), вся соль в интерпретации флагов. Найти enumeration для них только.
| Сообщение посчитали полезным: |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 28 июня 2020 17:23 · Личное сообщение · #7
RamMerlabsВот я покопался в HEX там идет ANSI строка, длина строки, и тд, между ними данные. Стоит некий флаг потом собственно число. Где же документация то как интерпретировать эти флаги. Без этого не понять как перейти на следующую строку.
| Сообщение посчитали полезным: |
Ранг: 73.1 (постоянный), 130thx Активность: 0.04↗0.23 Статус: Участник
|
Создано: 28 июня 2020 17:26 · Личное сообщение · #8
>>Где же документация то как интерпретировать эти флаги дык я ж об этом и говорю. кстати, там не ansi, а utf8
| Сообщение посчитали полезным: |
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 28 июня 2020 17:46 · Личное сообщение · #9 |
Ранг: 43.1 (посетитель), 20thx Активность: 0.16↗0.29 Статус: Участник
|
Создано: 28 июня 2020 18:27 · Личное сообщение · #10
zombi-vadim пишет: я пишу не на Delphi Я что мешает скачать делфи, взять из исходников юнит Classes.pas (или System.Classes.pas) и разобрать указанную vitokop функцию? Никакой документации для этого не нужно, и структуру можно понять без тыканины в HEX и бинарниках.
| Сообщение посчитали полезным: |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 28 июня 2020 18:53 · Личное сообщение · #11
rmnЕсли вы разбираетесь в данном то подскажите пожалуйста вот к примеру идет байт 04 за ним строка Left тут все понятно Далее идет байт 03 - непонятно что это Далее 6901 это собственно значение (361)Далее опять длина строки. Что означает 03?
| Сообщение посчитали полезным: |
Ранг: 73.1 (постоянный), 130thx Активность: 0.04↗0.23 Статус: Участник
|
Создано: 28 июня 2020 18:59 · Поправил: RamMerlabs · Личное сообщение · #12
zombi-vadimБлин, в его же исходниках всё есть: >>#define vaInt16 3 Это и есть интерпретация флагов. Соответственно, нужно считать следующие 2 байта как значение свойства.
| Сообщение посчитали полезным: zombi-vadim |
 Ранг: 527.7 (!), 381thx Активность: 0.16↘0.09 Статус: Участник Победитель турнира 2010
|
Создано: 28 июня 2020 19:01 · Личное сообщение · #13
давно все изобретено до нас DFMEditor, DFMExplorer, DFMConvertor
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: mak |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 28 июня 2020 19:10 · Личное сообщение · #14
RamMerlabsСпасибо вам большое, кажется начинает доходить..
| Сообщение посчитали полезным: |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 29 июня 2020 20:47 · Поправил: zombi-vadim · Личное сообщение · #15
RamMerlabsБлагодаря вам все получилось, осталось только несколько непоняток. Подскажите пожалуйста если вы в курсе, почему если строка закодирована в UTF 8 или Unicode, то за каким то лядом впереди нее пишется несколько нулей, причем эти нули в длине строки не учитываются, что это такое, если какое то выравнивание, то почему с переди строки, не могу понять что это..
| Сообщение посчитали полезным: |
Ранг: 158.4 (ветеран), 123thx Активность: 0.14↗0.49 Статус: Участник
|
Создано: 30 июня 2020 01:24 · Личное сообщение · #16
zombi-vadimДля бинарных данных размер - это dword. В сорцах же все есть, начинай с функции LoadFromBinaryDFM и смотри, как она парсит данные разных типов.
| Сообщение посчитали полезным: zombi-vadim |
Ранг: 16.3 (новичок), 2thx Активность: 0.15↗0.22 Статус: Участник
|
Создано: 30 июня 2020 20:01 · Личное сообщение · #17
rmnСпасибо вам за подсказки и терпение  Разбирать чужой код для меня всегда та еще задачка.
| Сообщение посчитали полезным: |