我有一個應用程序(win32 exe文件)沒有源代碼。是否有可能extern一個win32應用程序(只有exe文件)
是否有可能我編寫C#應用程序並重用該win32.exe文件中的某些功能?
感謝您的閱讀。
此致敬禮!
我有一個應用程序(win32 exe文件)沒有源代碼。是否有可能extern一個win32應用程序(只有exe文件)
是否有可能我編寫C#應用程序並重用該win32.exe文件中的某些功能?
感謝您的閱讀。
此致敬禮!
您可以運行
dumpbin.exe /exports [your-win32.exe]
,看看它的功能出口。然後你可以使用(無論是C#等價物)LoadLibrary()還是GetProcAddress()來調用這些函數。
當然,您需要知道這些函數的簽名才能正確調用它們;即參數的數量和順序等。
可執行文件很少導出任何東西。 – 2009-09-28 16:32:29
當然,如果exe文件不*導出任何函數,或者它只導出不需要的函數,那麼您運氣不好。 (我知道你知道這一點,但其他人可能不知道) – 2009-09-28 16:32:36
不知道這是你在找什麼,但如果其他exe有GUI,你可以通過發送消息來做一些事情。只需運行Spy ++,用其他應用程序做任何你想做的事情,並在完成後觀看日誌。如果不使用特殊控件,則可以通過獲取所需控件的句柄並向它們發送適當的消息來操作該GUI。如果您不希望用戶知道您正在運行其他應用程序,則可以在其他桌面上運行它。
另一個可以利用的方法是在另一個exe的進程中運行自己的線程,並使用各種IPC技術之一與您的應用程序進行通信。在這裏有很多關於遠程線程注入的問題,所以只需要考慮一下。
最後,如果幸運的話,您需要的功能實際上就是exe所使用的DLL之一,無論是作爲導出函數還是作爲COM接口。看看使用Process Explorer的運行時間,看看是否有任何模塊看起來很有趣。至於使用其他模塊,DLL顯然要容易得多。
非常感謝。 關鍵詞我在這裏學到的是: 1)Spy ++用於監視GUI控制消息 2)線程注入 3)我可以通過獲取句柄來操作gui。 4)dumpbin.exe/exports [your-win32.exe]可以得到導出的funcs 5)LoadLibrary()和GetProcAddress()來調用這些函數。 – ariso 2009-09-29 14:24:00