# LoadLibrary 调试 ## zihu4n ### processing - 感觉LoadLibraryA的底层调用其实是LoadLibraryExA(dllname,0,0) - 然后LoadLibraryExA(dllname,0,0)会调用LoadLibraryExW(dllname,0,0) - 最后是走的LdrLoadDll(1,0,dll,0) - LdrLoadDll有点难顶 - <del>所以为啥不继续向下了</del> ### stucked ## yong9 - LoadLibraryA会调用LoadLibraryExA,但是调用前call了一堆ntdll里的函数 - 不清楚什么作用 - LoadLibraryExA调用LoadLibraryExW,调用前也call了一堆ntdll里的函数 - 最后LoadLibraryExW调用了LdrLoadDll ## dwh 位于kernel32.dll的LoadLibraryA首先调用了kernelbase中的LoadLibraryA_0 之后在LoadLibraryA_0中又调用了kernelbase.dll中的LoadLibraryExA 然后在LoadLibraryExA中调用LoadLibraryExW 在LoadLibraryExW中: 先是用函数RtlInitAnStringEx(&DestrinaStringa,dllname)将dllname放入到DestrinaStringa结构中, 这个结构是UNICODE_STRING包含三项: {len:len(dllname)*2, maxlen ,buffer } 之后调用LdrLoadDll 【LdrLoadDll还得再调试】 ## RRR - 首先看`LoadLibrary`到`LoadLibraryEx`这个过程思考一下缓解方案 - 如果寻求统一的解决方案,考虑Hook `LoadLibraryEx` - Hook的方式 - 强行patch已有调用 - 运行时Hook
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up