首頁
社區(qū)
課程
招聘
程序調(diào)用外部的exe中某個函數(shù),該函數(shù)依賴其他庫,運行時報錯

大概情況是這樣的。我需要用到某個程序的某個函數(shù)。這個函數(shù)在EXE中,我程序里很直接的用了LoadLibraryW,和加載dll一樣的方法來加載exe程序。結(jié)果調(diào)用這個入口的時候崩潰了。
上面那個是現(xiàn)象,我現(xiàn)在大概的解決思路是兩個:
1.其實有點懷疑是調(diào)用外部庫的原因,我看了exe底下的文件只有dll,應該是動態(tài)調(diào)用的,但我搜索了一下exe中并沒有LoadLibraryW這幾個dll,我有點懷疑是靜態(tài)加載了這些的dll。那我應該有什么方法可以讓exe加載lib呢?
2.子進程啟動一個這個exe(狀態(tài)可能會比我直接加載會正確),然后附加這個進程去調(diào)用這個函數(shù),不知道能不能這么騷操作。可以提點一下這種操作方式叫做什么?
本人小白,很多東西不知道對不對,請各位大神們指點一下。

收藏
1條回答
0346954 2021-6-28 2021-6-28編輯
  1. 懷疑exe靜態(tài)加載了dll 可以驗證一下,vs帶的工具叫 dumpbin.exe,使用everything搜索電腦中是否有這個工具(也可以網(wǎng)上下載depends on工具),然后在cmd下輸入 dumpbin /imports xxx.exe 即可輸出這個exe靜態(tài)調(diào)用了哪些dll中的什么函數(shù)
    2.這個思路是可行的,使用子進程的方式啟動這個exe,然后調(diào)用exe中的某一個函數(shù)(需要知道這個函數(shù)在進程內(nèi)存空間的地址),這種方式叫做注入,最簡單的有遠線程注入,調(diào)用API CreateRemoteThread等函數(shù)。
回復