Поиск недокументированных API в Windows - PullRequest
45 голосов
/ 28 мая 2009

Мне было интересно узнать, как можно найти недокументированные API в Windows.

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

Ответы [ 5 ]

37 голосов
/ 28 мая 2009

Используйте инструмент для выгрузки таблицы экспорта из общей библиотеки (например, .dll, такой как kernel32.dll). Вы увидите именованные точки входа и / или порядковые точки входа. Как правило, для окон именованные точки входа не исправлены (внешние "C"). Скорее всего, вам понадобится заглянуть в код сборки и извлечь параметры (типы, номер, порядок, соглашение о вызовах и т. Д.) Из стекового фрейма (если он есть) и зарегистрировать использование. Если нет стекового фрейма, это немного сложнее, но все же выполнимо. Смотрите следующие ссылки для справок:

  1. http://www.sf.org.cn/symbian/Tools/symbian_18245.html
  2. http://msdn.microsoft.com/en-us/library/31d242h4.aspx

Изучите такие инструменты, как dumpbin для изучения разделов экспорта.

Существуют также сайты и книги, которые пытаются сохранить обновленный список недокументированных API окон:

  1. Недокументированные функции
  2. Учебник по архитектуре Windows
  3. Как найти недокументированные константы, используемые функциями Windows API
  4. Недокументированные окна
  5. Windows API

Edit: Эти же принципы работают на множестве операционных систем, однако вам придется заменить инструмент, который вы используете для вывода таблицы экспорта. Например, в Linux вы можете использовать nm , чтобы создать дамп объектного файла и перечислить его раздел экспорта (среди прочего). Вы также можете использовать gdb для установки точек останова и пошагового выполнения кода сборки точки входа, чтобы определить, какими должны быть аргументы.

9 голосов
/ 28 мая 2009

IDA Pro - ваш лучший выбор, но , пожалуйста, удвойте, пожалуйста, , на самом деле никогда не используйте их ни для чего.

Они внутренние, потому что они меняются; они могут (и могут) даже измениться в результате исправления, так что вы даже не гарантируете, что ваш недокументированный API будет работать для конкретной версии ОС и уровня пакета обновления, для которого вы его написали. Если вы отправляете такой продукт, вы живете в чужое время.

8 голосов
/ 02 июля 2009

Всем здесь пока не хватает какой-то существенной функциональности, которая включает в себя крайне недокументированные части ОС Windows RPC . Операции RPC (например, rpcrt4.dll, lsass.exe, csrss.exe и т. Д.) Выполняются очень часто во всех подсистемах через порты LPC или другие интерфейсы, их функциональность скрыта в заклинаниях мистики различного типа / подтипа. / struct-typedef и т. д. ..., которые существенно сложнее отлаживать, из-за асинхронной природы или того факта, что они предназначены для процессов, которые, если бы вы отлаживали с помощью одного шага или что у вас, вы бы нашли всю систему блокировка из-за блокировки клавиатуры или других операций ввода-вывода;)

ReactOS , вероятно, является наиболее целесообразным способом исследования недокументированного API. У них достаточно зрелое ядро ​​и другие исполнительные системы. IDA довольно трудоемкий, и вряд ли вы найдете что-то, чего еще не было у людей в ReactOS.

Вот реклама со связанной страницы;

ReactOS® - это бесплатная современная операционная система. система на основе дизайна Windows® XP / 2003. Написано полностью из с нуля, он стремится следовать Архитектура Windows®, разработанная Microsoft с аппаратного уровня вплоть до приложения уровень. Это не на основе Linux система, и не разделяет ни один из Unix архитектура.

Основная цель Проект ReactOS должен предоставить операционная система, которая является двоичной совместим с Windows. Это будет разрешить ваши приложения Windows и водители бегать, как они бы на вашем Система Windows. Кроме того, внешний вид и ощущение операционной системы Windows система используется так, что люди привыкли к знакомому пользователю интерфейс Windows® будет найти с помощью ReactOS прост. Максимальный Цель ReactOS - позволить вам удалить Windows® и установить ReactOS без конечного пользователя, замечающего меняется.

Когда я исследую некоторые редко встречающиеся конструкции Windows, ReactOS часто является единственной заслуживающей доверия ссылкой.

1 голос
/ 28 мая 2009

Для API пользовательского режима вы можете открыть Kernel32.dll User32.dll Gdi32.dll, особенно ntdll.dll в зависимом ходунке и найти все экспортированные API. Но у вас не будет документации, конечно.

Только что нашел хорошую статью по Native APIS от Mark Russinovich

1 голос
/ 28 мая 2009

Посмотрите на dll системы и какие функции они экспортируют. Каждая функция API, независимо от того, документирована она или нет, экспортируется в одну из них (пользователь, ядро, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...