Это DLL, встроенная в Windows, odbc32.dll. Функция называется LoadTraceDll ()
Фрейм стека в Visual Studio 2008:
odbc32.dll! LoadTraceDll () + 0x42f байт
Я использовал анализатор PE, и я не вижу этого в списке экспорта для odbc32.dll.
Мои вопросы следующие:
Полная трассировка стека выглядит следующим образом:
ODBCTracer.dll!TraceVersion() Line 2259 C++
odbc32.dll!LoadTraceDll() + 0x42f bytes
odbc32.dll!FInitTrace() + 0xf3 bytes
odbc32.dll!DllMain() + 0x14692 bytes
odbc32.dll!_CRT_INIT() - 0x3e3 bytes
ntdll.dll!LdrpRunInitializeRoutines() + 0x1e8 bytes
ntdll.dll!LdrpLoadDll() - 0x336 bytes
ntdll.dll!LdrLoadDll() + 0x9e bytes
KernelBase.dll!LoadLibraryExW() + 0x13f bytes
odbccp32.dll!LoadDM() + 0x2a bytes
odbccp32.dll!TracingPageProc() + 0xc46 bytes
user32.dll!UserCallDlgProcCheckWow() - 0x180d bytes
user32.dll!DefDlgProcWorker() + 0xba bytes
user32.dll!DefDlgProcW() + 0x36 bytes
user32.dll!UserCallWinProcCheckWow() + 0x11d bytes
user32.dll!InternalCreateDialog() - 0xc7 bytes
user32.dll!CreateDialogIndirectParamAorW() + 0x5b bytes
user32.dll!CreateDialogIndirectParamW() + 0x18 bytes
comctl32.dll!_CreatePageDialog() + 0xb1 bytes
comctl32.dll!_CreatePage() + 0x161 bytes
comctl32.dll!PageChange() + 0xca bytes
comctl32.dll!PropSheetDlgProc() + 0x36e bytes
user32.dll!UserCallDlgProcCheckWow() + 0x11b bytes
user32.dll!DefDlgProcWorker() + 0xba bytes
user32.dll!DefDlgProcW() + 0x36 bytes
user32.dll!UserCallWinProcCheckWow() + 0x11d bytes
user32.dll!SendMessageWorker() + 0x158 bytes
user32.dll!SendMessageW() + 0x5d bytes
comctl32.dll!CCSendNotify() + 0xfbd bytes
comctl32.dll!SendNotifyEx() + 0x80 bytes
comctl32.dll!ChangeSel() + 0x2dc bytes
comctl32.dll!Tab_OnLButtonDown() + 0xfc bytes
comctl32.dll!Tab_WndProc() + 0x56d bytes
user32.dll!UserCallWinProcCheckWow() + 0x11d bytes
user32.dll!DispatchMessageWorker() + 0x12a bytes
user32.dll!IsDialogMessageW() + 0x102 bytes
comctl32.dll!Prop_IsDialogMessage() + 0x1f0 bytes
comctl32.dll!_RealPropertySheet() + 0x31b bytes
comctl32.dll!_PropertySheet() + 0x55 bytes
odbccp32.dll!MainSheet() + 0x18c bytes
odbccp32.dll!SQLManageDataSources() + 0x4b bytes
odbcad32.exe!WinMain() + 0x25b bytes
odbcad32.exe!ODBC___GetSetupProc() + 0x4ae bytes
kernel32.dll!BaseThreadInitThunk() + 0xd bytes
ntdll.dll!RtlUserThreadStart() + 0x21 bytes
Как определить типы параметров и тип возвращаемого значения (сигнатура метода)?
Ты не можешь
(Ну, вы можете, с определенным уровнем уверенности, но это требует больших навыков обратного инжиниринга. Вы должны разобрать библиотеку, выяснить, как определяется и вызывается функция, и из типичных последовательностей операций и размеров параметров / переменных вы можно сделать вывод, что тип аргументов и возвращаемое значение может быть)
Как я это называю? Могу ли я не называть его относительный адрес?
Вы можете dlopen()
… э-э … LoadLibrary()
DLL, а затем получить ее адрес с помощью GetProcAddres()
, сохраните его в указателе функции, затем вызовите его:
HMODULE hndl = LoadLibrary("My.DLL");
void (*func)() = GetProcAddress(hndl, "MyFunction");
func();
Если у вас есть символы (файл PDB) изображения, вы можете получить неэкспортированные символы и их подписи, если они являются общедоступными (на языке PDB: общедоступный или частный). С помощью DIA Вы можете сопоставить символы с соответствующим файлом изображения. Увидеть Вот для примера того, как работает отображение между символами PDB и изображением.