Как подключить нативный процесс, функции экспорта которого недоступны?

Мне нужно решить проблему обратного инжиниринга нативного процесса. Я имею неуправляемый.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 может помочь вам. Вам также необходимы базовые знания ассемблера и соглашений о вызовах. И, конечно же, принципы установки перехватчиков (обходных путей).

Другие вопросы по тегам