Сейчас на форуме: Lohmaty, tyns777, cppasm (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Получить структуру класса из pdb
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 февраля 2018 19:34 · Поправил: jepuper
· Личное сообщение · #1

Всех приветствую.

Есть программа для которой была написана дллка расширяющая её возможности, работает через пропись в импорт и взаимодействие с восстановленными руками классами.

И есть ~30 версий этой программы (бинарники + полные pdb) и для всех нужна эта библиотека. Нужные классы меняются очень слабо, но достаточного для того, что бы многие смещения изменились.

Например из:
Code:
  1. class  x_old {
  2.    public:
  3.      int a;
  4.      int b;
  5. }


в

Code:
  1. class  x_new {
  2.    public:
  3.      int a;
  4.      int c;
  5.      int b;
  6. }


Как я понимаю имея на руках pdb для проги я могу автоматически сгенерить нужные структуры и дальше через #ifdef скомпилировать под каждую версию свою длл.

Можете подсказать библиотеки или готовые решения для работы с pdb? Ну или другой вариант как можно решить эту задачку.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 23 февраля 2018 19:55
· Личное сообщение · #2

diadump есть в комплекте студии, дальше под себя поправьте
https://github.com/wbenny/pdbex.git либо под себя переделайте

| Сообщение посчитали полезным: jepuper


Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 февраля 2018 20:01
· Личное сообщение · #3

Вытягивать структуры из отладочных символов не лучшая идея, учитывая что они меняются. Адекватное решение - понять механизмы, логику работы и написать свою реализацию.

-----
vx




Ранг: 33.4 (посетитель), 24thx
Активность: 0.020
Статус: Участник

Создано: 23 февраля 2018 23:50 · Поправил: redlord
· Личное сообщение · #4

difexacaw
охуенная теория. у тс нет исходного кода и не будет.
и тс - пытается понять механизмы и логику. ему нужен инструмент
и явно, не мифический мотор.
p.s.
https://github.com/Microsoft/microsoft-pdb

| Сообщение посчитали полезным: jepuper


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 февраля 2018 00:29 · Поправил: reversecode
· Личное сообщение · #5

redlord весь смех мс в том что, то что он там дистрибютят, собрать из тех сорсов нельзя
но как готовая тулза екзе, для дампа ЦВ она ничего



Ранг: 33.4 (посетитель), 24thx
Активность: 0.020
Статус: Участник

Создано: 24 февраля 2018 00:40 · Поправил: redlord
· Личное сообщение · #6

reversecode
не так давно, костыль из части этих сурсов собирал.
в целом - да, писец
вроде, у них это было написано, что все через жопу и не мечтайте )
p.s.
кстати, майки мощно двигают опенсорс.
не удивлюсь, если засрать багрепорт им, можно сдвинуть дело с мертвой точки




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 февраля 2018 00:45
· Личное сообщение · #7

уже есть насколько помню
кто то уже катал типа - что за хрень, как эти сорсы собрать, половину файлов нехватает



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 24 февраля 2018 02:30 · Поправил: dosprog
· Личное сообщение · #8

jepuper пишет:
Как я понимаю имея на руках pdb для проги я могу автоматически сгенерить нужные структуры и дальше через #ifdef скомпилировать под каждую версию свою длл.

Лучше выбрать наиболее достойную версию софта и сгенерировать библиотеку для неё.
Нельзя объять необъятное.

Можно, конечно, попытаться - но цена вопроса?..





Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 февраля 2018 16:13
· Личное сообщение · #9

reversecode, спасибо - подошло. Примерно треть я успешно покрыл через эту тулзень и regexp (никогда не "парсите" заголовки через regex).

dosprog пишет:
Лучше выбрать наиболее достойную версию софта и сгенерировать библиотеку для неё.


Увы в данном случае это не подходит, версия = лицуха (донгл) и просить всех обновляться всех до последней версии не вариант.


 eXeL@B —› Вопросы новичков —› Получить структуру класса из pdb
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати