Как подключить нативный процесс, функции экспорта которого недоступны?
Мне нужно решить проблему обратного инжиниринга нативного процесса. Я имею неуправляемый.exe наличия некоторых элементов управления на нем (например, TextBox, Buttons, TextAreas, ComboBoxes). После заполнения всех данных на элементах управления пользователь нажмет "Открыть".
На самом деле он откроет порт модема и отправит AT-команды. Я хочу проверить формат данных и сообщение, которое они отправят на COM-порт модема.
Итак, как мне нужно перепроектировать процесс и перехватить функции (скорее всего, функция, которая "открывает" порт модема, и когда пользователь нажимает "Открыть", она вызывается).
Предложения?? Мои указания верны, и нужно ли мне подключать его функции, тогда после инъекции моя цель будет достигнута.
Замечания:
Функция EXPORTED не обнаружена. Для этого я использовал CFF/PE Explorer.
С уважением, Усман
2 ответа
Я вижу две возможности. Можно было бы подключить монитор к ком-порту и просто посмотреть, что там происходит. Это вообще исключает RE кода и, как правило, будет немного быстрее и проще.
[Изменить: есть две формы этого: один аппаратный - логический анализатор (или что-то в этом порядке), подключенный к оборудованию COM-порта. Он декодирует и отображает поток последовательных данных, когда он проходит по проводам. Другой формой будет программное обеспечение, которое использует IAT для подключения к вызову WriteFile
и показал, какие файлы были открыты и какие данные записаны в каждый. Для этого может быть полезна библиотека Microsoft Detours.]
В любом случае, если вы решите перечитать код, вам, вероятно, понадобится приличный дизассемблер, такой как IDAPro. Вы, вероятно, сможете найти части, которые имеют дело с COM-портами, начиная с мест, которые вызывают CreateFile
а также WriteFile
(при условии, что вы имеете дело с Win32, основываясь на упоминании "PE"). Возможно, у вас будет что-то вроде "\\.\COM " (или, по крайней мере, "COM ") в виде буквенной строки, и вы захотите найти вызов CreateFile
который использует эту строку (или ее копию).
Оттуда вам придется работать в обратном направлении, чтобы найти код, который собирает строки, которые фактически записываются в COM-порт. Трудно догадаться, насколько это будет сложно.
OllyDbg может помочь вам. Вам также необходимы базовые знания ассемблера и соглашений о вызовах. И, конечно же, принципы установки перехватчиков (обходных путей).