Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Дневники и блоги —› Мой журнал: Syser, IDA, DirectX и прочее
Посл.ответ Сообщение

Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 08 мая 2013 19:30
· Личное сообщение · #1

Не совсем прозрачно, как работает Syser с PDB файлами. PDB символы у меня установлены стандартным образом в Windows\Symbols. Возможно ли использовать их без всякого 'Symbol Downloader'?

Пробовал команду:

sdscmd -a kernel32.dll

Создался файл kernel32.sds в syser\symbols\dll.

Пробовал ту же команду, убрав kernel32.pdb из стандартного места (руки до filemon-а не дошли). Создался точно такой же .sds файл. Всё как-то тихо-мирно и непонятно чего происходит...




Ранг: 623.6 (!), 521thx
Активность: 0.330.9
Статус: Участник
_Вечный_Студент_

Создано: 09 мая 2013 04:31
· Личное сообщение · #2

У них есть свой форум (http://www.sysersoft.com/help.html). Там вам быстрее ответят на ваш вопрос.
Имеется также FAQ.

-----
Give me a HANDLE and I will move the Earth.




Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 09 мая 2013 08:10
· Личное сообщение · #3

Проверил filemon-ом, он его (kernel32.pdb) всё таки находит, но читает всего несколько килобайт (сам файл больше мега). В результате полученный .sds всё таки увеличивает количество символов (938 без .sds vs 1328 с .sds). Но это не зависит от .pdb. (т.е. операцию sdscmd -a kernel32.dll есть смысл делать даже без установленной debug info).

А символов в том .pdb много, но они пожёванные (__imp__RtlLookupAtomInAtomTable@12 и т.п.). Помнится, в давние времена, SoftICE из кушал и показывал. Жаль, что Syser их не признаёт. Ну да не суть важно, не kernel "отлаживать" собираемся...

P.S. хорошо бы checked build раздобыть с непожёванными символами...



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 15 мая 2013 12:39
· Личное сообщение · #4

Поведение sdscmd с user32.dll отличается от kernel32.dll. Если для kernel32.dll pdb он кушать отказался, то для user32.dll схавал за милую душу. Это наводит на мысль, что версия kernel32.pdb не соответствует dll, несмотря на то, что symchk заверяет в обратном.



Ранг: 512.7 (!), 360thx
Активность: 0.270.04
Статус: Модератор

Создано: 15 мая 2013 15:58
· Личное сообщение · #5

sigil
уважаемый. есть кнопка редактирования своей старой мессаги, пользуйтесь

насчет
пожёванные

скорее декорированные (mangled) и ето нормально
без декорации получите порукам, почему - ищите ответ сами

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

Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 15 мая 2013 17:08 · Поправил: sigil
· Личное сообщение · #6

Спасибо за внимательность! Я неправильно указал пример символа, но было лень исправлять. Это был конечно не пожёванный символ, вот пожёванный:

??_C@_19IJOJOJIB@?$AAP?$AAA?$AAT?$AAH?$AA?$AA@


Глюкало syser не выдаёт ни один символ от dinput.dll, хотя исправно схавал и pdb, и экспорты. Количество сиволов для этого модуля пишет исправно, но по нужным адресам ничего нет. Команда sym DirectInput* ничего не выдаёт...

P.S. Насчёт старой мессаги увидел кнопку "Стереть", но там был жестокий опрокид. А вот в слове"Правка" я нужного смысла (то бишь "Редактировать") не разглядел. Да и не особо приглядывался в 8-то утра...



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 15 мая 2013 18:01
· Личное сообщение · #7

Не знаю, чего я сделал, но после часа всевозможных рестартов с вариациями экспорты от dinput появились...




Ранг: 623.6 (!), 521thx
Активность: 0.330.9
Статус: Участник
_Вечный_Студент_

Создано: 16 мая 2013 03:29
· Личное сообщение · #8

sigil
Не знаю, чего я сделал...

Ну а мы и подавно не знаем.
О чем вообще ваша тема? Больше похоже на путевые заметки.

-----
Give me a HANDLE and I will move the Earth.




Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 16 мая 2013 19:59
· Личное сообщение · #9

Так и есть наверное. Это уже не вопрос, а скорее журнал. Может кому-то пригодится. Сам был бы рад, если бы наткнулся на что-то подобное. То, что нигде не документируется и приходится доходить методом "научного тыка".



Ранг: 512.7 (!), 360thx
Активность: 0.270.04
Статус: Модератор

Создано: 16 мая 2013 21:36 · Поправил: sendersu
· Личное сообщение · #10

sigil пишет:
после часа всевозможных рестартов с вариациями экспорты от dinput появились...

и как должен пионер следовать вашим шагам ?

хороший инженер должен разбираться в емпирике и в последовательностях маркова ) (шутка)




Ранг: 623.6 (!), 521thx
Активность: 0.330.9
Статус: Участник
_Вечный_Студент_

Создано: 17 мая 2013 03:02 · Поправил: plutos
· Личное сообщение · #11

sigil:
Может кому-то пригодится.

Это врядли. Чтобы быть полезным ваш журнал должен содержать что-то конкретное: пошаговое описание ваших действий, результаты экспериментов, выводы, заключения и т.д.
А тут что?

"Не знаю, чего я сделал, но после часа всевозможных рестартов с вариациями экспорты от dinput появились... "

Ерунда какая-то. Тогда уж лучше в off-top перенести и там делиться впечатлениями.

-----
Give me a HANDLE and I will move the Earth.




Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 12:48
· Личное сообщение · #12

Уважаемый plutos, если хотите обсудить со мной полезность моих постов -- добро пожаловать в личку! Уж Ваши-то комментарии точно никому не интересны и совершенный off-top здесь! Если Вы модератор, Вы имеете право решать -- каким где темам быть, а каким темам не жить. Если же нет, как говорится, arevior и всего самого доброго!


Кто-нибудь знает, есть ли в Syser возможность на время отобразить содержимое экрана по hotkey? Помнится в SoftICE была такая фича...




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

Создано: 17 мая 2013 12:54
· Личное сообщение · #13

запусти хелп и почитай
для таких как ты его писали



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 13:30
· Личное сообщение · #14

Спасибо, за ещё один бесоплезный пост. Syser не та программа, где всё досконально задокументировано. А по тому, что задокументировано или доступно средствами интерфейса вопросов здесь ты не увидишь.




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

Создано: 17 мая 2013 13:42
· Личное сообщение · #15

DebuggerHelp.chm
SyserCommand.chm
задокументированы все комманды
может вам все таки для начала читать?

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

Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 17:55 · Поправил: Модератор
· Личное сообщение · #16

Хорошо, есть такая кнопка F4.

Как появилось время детально изучить help, нашёл.

От модератора: пост поправил, часть постов удалил. начинать с чтения хелпа надо, а потом уже сюда идти и спрашивать. в следующий раз за срачики будет бан



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 21:02 · Поправил: sigil
· Личное сообщение · #17

sdscmd -a на .dll создаёт .dll.sds файл в той же директории. Подсосал ли он .pdb можно узнать заглянув в него в самый конец, там должно быть 3 поля:

имя_модуля полный_путь_до_pdb имя_dll_файла

Но с kernel32.dll совсем другая история...

Кстати, sdscmd -a на .pdb создаёт фактически аналогичный файл, только вместо имя_dll_файла там будет имя_pdb_файла.



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 21:09 · Поправил: sigil
· Личное сообщение · #18

Размер у ddraw.dll.sds и dinput.dll.sds одинаковый (61440), это слегка напрягает. Да и у kernel32.sds такой же. А вот у user32.sds размер побольше. Ну да ладно, главное -- работает.



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2013 21:36 · Поправил: sigil
· Личное сообщение · #19

Если можно, переименуйте пожалуйста эту тему в "Мой журнал: Syser, IDA, DirectX и прочее". Я буду выкладывать сюда некоторые вопросы, с которыми сталкиваюсь. Потом самому возможно придётся читать лет через 10. Кто его знает, может ещё чего доведётся реверсить. Жизнь такая штука, всё возвращается на круги своя.

Хороший туториал по DirectDraw.
Аналогичный туториал по DirectInput (сорри за PDF, в HTML не искал)




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 мая 2013 22:57
· Личное сообщение · #20

Топик переименовал и заодно перенёс в блоги.
Пользуйся кнопкой "Правка", не создавай сообщения подряд.



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2013 08:53 · Поправил: sigil
· Личное сообщение · #21

Спасибо тебе, Главный. Твои пожелания будут учтены.

Хорошая статья по PE формату.



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 23 мая 2013 17:30 · Поправил: sigil
· Личное сообщение · #22

Вижу на форуме такие вопросы: правильно ли использовать декомпиляторы, но чаще -- "не могу понять точно за что отвечает переменная (или константа) X".

Для меня IDA -- это способ охватить картину в масштабе. Но точки входа в интересуемый функционал отыскиваются в отладчике. А также, если не можешь понять за что отвечает переменная (или константа) X, просто поменяй её и посмотри что получится -- это может значительно сократить время. Если конечо уже есть догадки и знаешь на что примерно нужно обращать внимание.

Но в чистом отладчике картина совсем другая. Там видишь одну деталь, можешь её пощупать. А пытаться выйти за рамки детали и обозреть общий смысл в отладчике -- это конечно самоубийство. Тогда и приходит на помощь IDA -- даёшь каждой детали, которую изучил в отладчике, осмысленное имя, и всё постепенно становится яснее и яснее. Это похоже на магию: 2 дня назад какая-то процедура была тёмным лесом, но когда поименовал каждую переменную, вызов и условный переход -- всё стало совсем по-другому!

Но конечно, всё подряд копать и *каждую* деталь именовать смысла может быть мало, если есть определённая цель. В этом и заключается искусство крека -- искать только то, что нужно для достижения цели и не забуряться в сторонние раскопки. Для этого нужно эффективно работать со стеком вызовов. Это значит, находить именно тот уровень, который нужен, а не ковыряться на нижних его уровнях.

Для этой цели нахождения нужного фрейма стека, как раз отладчик просто необходим (и кнопочка F6 в Syser). Это как раз то, что нужно сделать в первую очередь. Встать на брэкпойнты интересуемых феноменов программы, будь то изменения пользовательского интерфейса, работа с аппаратурой или считывание данных из файла. И затем проехать по стеку на кнопке F6 снизу доверху до тех пор, пока мы не упрёмся в главный или второстепенный цикл программы. Этот фрейм с циклом будет важным узлом в паутине наших раскопок. Потом другой феномен -- другой узелок, третий феномен -- третий узелок, затем в Иде находим связи между этими узлами -- вот уже вырисовывается сеточка.

При изучении стека вызовов не забываем составлять его карту, а затем анализировать такие карты у различных феноменов на предмет совпадения на нижних уровнях. Момент схождения карт -- это ещё один узелок. Там где стеки пошли одинаковые будет уже вспомогательная, утилитарная логика, а нам ведь нужна бизнес-логика, значит эти нижние фреймы нам уже не столь интересны.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 23 мая 2013 19:55 · Поправил: Dr0p
· Личное сообщение · #23

> правильно ли использовать декомпиляторы

Деконпили есть только в сферическом вакууме. Ежели бы существовал полноценный деконпиль, то небыло бы этих ваших виндоусов(и прочих говноосей)..



Ранг: -2.1 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 25 мая 2013 17:44
· Личное сообщение · #24

Питонисты наплодили PE-библиотек. Ну пипец!!! Делать что ли нечего?! Броузер ещё напишите на питоне! Кто, только, потом всё это питонистическое добро будет использовать и для каких целей, интересно мне знать...

Нашёл 2 либы на C++ (слава богу, затесались в первых результатах поиска между питонистическим гувном).

PE Bliss
PeLib

Кто-нибудь имел опыт сравнения оных? Может есть ещё какие?



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

Создано: 30 июля 2013 16:04
· Личное сообщение · #25

апну может кто будет искать.

начинал прожект с PeLib, в последствии перешел на pe_bliss
Второй в использовании намного удобнее - свои иксепшены, нормальные обьекты и прочее. Приятно юзать.
Хотя если кому нравится пейсать конструкции вида
Code:
  1. const PeLib::PeHeaderT<PLATFORM_BITS>& PEHead = static_cast<PeLib::PeFileT<PLATFORM_BITS>&>(*pPEFile).peHeader();
то сгодится и PELib.

Резолюшен - рекомендую PE Bliss



Ранг: -7.5 (нарушитель)
Активность: 0.010
Статус: Участник

Создано: 09 октября 2017 11:21
· Личное сообщение · #26

я до сих пор юзаю PeLib. И норм. Толь привык, то ли... Но не пробовал pe_bliss. Сказать ничего не могу.


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


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