Как подключить нативный процесс, функции экспорта которого недоступны? - PullRequest
0 голосов
/ 09 июля 2011

Мне нужно решить задачу обратного инжиниринга собственного процесса. Я имею неуправляемый .exe наличия некоторых элементов управления на нем (например, TextBox, кнопки, TextAreas, ComboBoxes). После заполнения всех данных на элементах управления пользователь нажимает «Открыть».

На самом деле он откроет порт модема и отправит AT-команды. Я хочу проверить формат данных и сообщение, которое они отправят на COM-порт модема.

Итак, как мне нужно перепроектировать процесс и перехватить функции (скорее всего, функция, которая «открывает» порт модема, и когда пользователь нажимает «Открыть», она вызывается).

Предложения ?? Мои указания верны, и нужно ли мне подключать его функции, и после инъекции моя цель будет достигнута.

Примечание:

Функция EXPORTED не обнаружена. Для этого я использовал CFF / PE Explorer.

С уважением Усман

Ответы [ 2 ]

1 голос
/ 09 июля 2011

Я вижу две возможности.Можно было бы подключить монитор к ком-порту и просто посмотреть, что там получится.Это вообще исключает RE кода и, как правило, будет немного быстрее и проще.

[Правка: есть две формы этого: один аппаратный - логический анализатор (или что-то в этом порядке)) подключен к оборудованию COM-порта.Он декодирует и отображает поток последовательных данных, когда он проходит по проводам.Другой формой будет программное обеспечение, которое использует IAT, чтобы подключиться к вызову WriteFile и показать, какие файлы были открыты и какие данные записаны в каждый.Для этого может быть полезна библиотека Microsoft Detours .]

Если вы все-таки решите перечитать код, вам, вероятно, потребуется приличный дизассемблер, такой как IDAPro.Вы , вероятно, сможете найти части, которые имеют дело с COM-портами, начиная с мест, которые вызывают CreateFile и WriteFile (при условии, что вы имеете дело с Win32, основываясь на упоминании "PE ").Возможно, у вас будет что-то вроде «\\. \ COM» (или, по крайней мере, «COM») в виде буквальной строки, и вы захотите найти вызов CreateFile, который использует эту строку (или копиюэто).

Оттуда вам придется работать задом наперед, чтобы найти код, который собирает строки, которые фактически записываются в COM-порт.Трудно догадаться, насколько это будет сложно.

0 голосов
/ 09 июля 2011

OllyDbg может помочь вам. Вам также необходимы базовые знания ассемблера и соглашений о вызовах. И, конечно же, принципы установки перехватчиков (обходных путей).

...