0

Мне нужно знать все функции Win32.exe или методы класса, содержащиеся в его экспортированной таблице (файл PE). Где я могу получить эту информацию? Я понимаю каждый раздел формата PE-файла, но, пожалуйста, расскажите мне, как действовать.Таблица экспорта содержит все записи функций Win32 Exe?

С уважением,

Мухаммад Усман

ответ

0

Таблица экспорта содержит только записи для экспортируемых функций. Если вы отлаживаете доступную информацию, обычно будут записи для большинства других функций. Без этого шансы довольно хороши, что исполняемый файл просто не содержит информации о функциях, которые не были экспортированы.

+0

Я отделяю всю отладочную информацию, чтобы отделить файл PDB, а мой проект скомпилирован как «Release». – Usman

+0

@Usman: Предполагая, что файл pdb доступен, вы можете использовать функции отладки Windows (особенно SymInitialize и компанию) для получения данных о функциях (экспортированных или иным образом). –

+0

Если это действительно возможно при наличии файлов dbg, мы можем взять все адреса не экспортируемых, простых функций win32 exe и адресов, тогда dbghelp api поможет выполнить все эти операции? Это было бы неплохо. – Usman

0

Использование dumpbin, который поставляется с Visual Studio C++ Express или загрузить OpenWatcom C/C++ пакет и там есть wdump с ним связано ...

 
Open Watcom Executable Image Dump Utility Version 1.8 
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. 
Source code is available under the Sybase Open Watcom Public License. 
See http://www.openwatcom.org/ for details. 

Usage: wdump [-?abdefipqrsx] [-A] [-B] [-D] [-S] 
    is a DOS EXE file, a Windows or OS/2 executable or DLL, 
      a PharLap executable, NLM, a QNX executable, 
      an ELF executable, shared library or object file, 
      or a COFF object. 

Edit: Вы не можете напрямую извлекать эти функции экспорта программными средствами, приведенная выше утилита будет показывать адреса, используя ключи командной строки, включая отображение функций экспорта для «LoadLibrary», «FreeLibrary». Когда вызов «GetProcAddress» используется внутри, он просматривает каталог экспорта, чтобы найти соответствующий адрес экспортируемой функции, прежде чем возвращать указатель функции для этой экспортируемой функции.

Edit # 2: @UsMan: Вы можете сбросить адреса функций экспорта, но найти подписи не так просто, как вам нужно будет разобрать соответствующий EXE и разрабатываем параметры, глядя на призыв стек. Кроме этого, если у вас есть сторонняя DLL, но не поставляется с файлом заголовка и файлом lib, чтобы показать вам сигнатуры функций ... вам в значительной степени не повезло, кроме дизассемблирования кода ... Если вы говоря о выпуске EXE или DLL, будет сложнее, поскольку информация об отладке была бы удалена, загрузив его в отладчик, чтобы выработать стек, используемые вызовы и параметры, которые были бы спорными.

Можете ли вы, пожалуйста, изменить свой вопрос, чтобы сделать его более четким в отношении вашей цели, поскольку я стреляю в ногу и рискую попасть в нисходящее из-за вашего неудовлетворенности этим ответом .... это MFC, ATL, DLL, что такое EXE, DLL и т. д.

+0

Что он будет делать. Мне будет временно отображать все списки не экспортируемых функций (простые функции Win32 Exe). Мне нужно Извлечь все эти запрограммированные и требуемые адреса всех тех, кто их назвал. – Usman

+0

@ Усман: у вас есть Visual Studio? И нет, это не «временное отображение всех списков неэкспортируемых функций» ... – t0mm13b

+0

yup Visual Studio 2008.NET, VS.2003.NET. Моя работа заключается в том, чтобы извлечь все подписи Win32 exe (не обработанные DLL-файлы не Win32. Я знаю, что каждая таблица экспорта содержит все адреса функций и декорированные имена). Мне нужно ИЗВЕЩАТЬ АДРЕСА ВЫИГРЫВЫХ 32 EXE FUNCS и ПОЛНЫХ ПОДПИСАНИЙ. – Usman