Подтвердить что ты не робот

Поиск недокументированных API в Windows

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

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

4b9b3361

Ответ 1

Используйте инструмент для выгрузки таблицы экспорта из общей библиотеки (например,.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-интерфейсов Windows:

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

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

Ответ 2

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

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

Ответ 3

Всем присутствующим до сих пор не хватает какой-то существенной функциональности, которая включает в себя чрезвычайно незарегистрированные части ОС 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 часто является единственной заслуживающей доверия ссылкой.

Ответ 4

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

Ответ 5

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

Просто нашел хорошую статью о Родной APIS от Марка Руссиновича