最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天实时:定位Dll加载异常的方法

来源:博客园


(资料图片仅供参考)

总体说明

动态库加载异常的原因有以下几种:1.dll不在dll搜索路径2.dll依赖的其他dll不在dll搜索路径3.dll与exe不是同一架构,如exe是64位,dll是32位4.dll或依赖的dll其导出函数对不上

dll或依赖的dll其导出函数对不上

下面是两个动态库,win32crypt.pyd依赖了pywintypes37.dll

点击这里获取素材

我们使用x64dbg打开win32crypt.pyd出现了上面的错误,说win32crypt.pyd的导入函数?PyWinObject_FromOLECHAR@@YAPEAU_object@@PEB_WH@Z,找不到实现我们将?PyWinObject_FromOLECHAR@@YAPEAU_object@@PEB_WH@Z进行解码为struct _object * __ptr64 __cdecl PyWinObject_FromOLECHAR(wchar_t const * __ptr64,int)

如何解码请查看c++命名粉碎及快速还原

使用ida打开win32crypt.pyd,查看导入函数,搜索PyWinObject_FromOLECHAR发现有问题的函数来自pywintypes37.dll

使用ida打开pywintypes37.dll,查看导出函数,搜索PyWinObject_FromOLECHAR发现其函数名为PyWinObject_FromOLECHAR(wchar_t const * __ptr64,__int64),和win32crypt.pyd的不同之处在于第二个参数为__int64,这样就对不上了,而导致导入失败

关键词: 以下几种