我在windows上使用MinGW gcc構建了一個dll。我使用.def指定的導出函數並生成.lib導入庫。然後我使用strip.exe去掉符號表。我試過objdump,它打印出空的符號表。但是當我使用strings.exe時,它仍然可以打印一堆函數和類名。這是一個問題嗎?其他人能夠根據dll的名稱查詢功能嗎?去掉dll中的符號
2
A
回答
1
所有剝離對dll的作用是刪除調試符號。它不會從dll中刪除函數。換句話說,如果有人導入你的dll或者使用它,他們只能訪問你輸出的任何東西。如果你不希望他們能夠訪問它,只需不導出它。
此外,當您執行發佈版本時,如果啓用了-s選項,它應該將其去掉。
3
閱讀PE,它有地址和名稱表。如果你清理名稱表,沒有過程就可以通過名字,只有地址找到導出的函數,這是通過連接器完成的,而不是動態: http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
有很多種方法,以確保出口函數來自DLL,但他們都發布了漏洞。如果您確實想要保護您的功能 - 在所有導出的功能上創建自定義調用約定或簽名驗證。
相關問題
- 1. 去掉引號
- 2. 去掉字符
- 3. JSON字符串:去掉雙引號
- 4. 去掉一個字符串中符號的替代方法
- 5. 常規陣列中的括號去掉
- 6. Plink去掉雙引號
- 7. 去掉括號節省表
- 8. Powershell - $ args去掉逗號
- 9. 如何去掉Python中的逗號字符串
- 10. 去掉Excel表中的非法字符
- 11. 去掉字符串中的所有HTML?
- 12. Python:去掉通配符字
- 13. 如何去掉字符串?
- 14. htaccess的重寫規則,去掉問號
- 15. 去掉非ASCII字符,但允許使用貨幣符號
- 16. 從字符末端去掉換行符號*
- 17. PHP,去掉髮布到MySQL之前的貨幣符號
- 18. C#從字符串中去掉xml
- 19. 在bash中如何去掉字符串
- 20. 正則表達式去掉Ruby中的符號而不是外來字符
- 21. 從PHP CSV導入去掉'撇號
- 22. 這個去掉標點符號的正則表達式也錯誤地去掉了空格。幫助:(
- 23. 去掉圖中的噪音
- 24. 字符串處理,去掉了一個逗號
- 25. 有效地去掉標點符號而不是「.COM」
- 26. 如何在問號後去掉字符串?
- 27. 如何去掉最後的連字符
- 28. 的shmat()失敗,「標識符去掉」
- 29. 去掉佔位符內的xml標籤
- 30. 優雅的方式去掉括號中的值在Python中