Анализ библиотеки DLL с помощью Python
Вопрос
В настоящее время я пытаюсь сделать некоторый самоанализ библиотеки DLL с python. Я хочу автоматически создать графический интерфейс тестирования на основе DLL.
Я могу загрузить свою DLL в python довольно легко, и я вызываю некоторые функции. Основная проблема в том, если я назову «dir» на объекте без вызова какого-либо метода, я получил в результате
>>> dir(myLib)
['_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl
ags_', '_func_restype_', '_handle', '_name']
и когда я вызываю вручную функцию (например, " Read_Version "), я получаю в результате функцию dir
>>> dir(myLib)
['Read_Version', '_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl
ags_', '_func_restype_', '_handle', '_name']
Кажется, что самоанализ работает только с функцией, которую я уже вызвал, и это не совсем "полезно" ;.) Р>
У вас есть другая идея, чтобы выбрать функции, которые находятся в DLL? (в питоне конечно)
Я использую Python 2.6 под Windows.
Решение
Насколько я знаю, не существует простого способа сделать это. Вы должны использовать какой-нибудь внешний инструмент (например, link / dump / exports
) или использовать синтаксический анализатор PE / DLL (например, pefile ).