簡體   English   中英

如何使用GCC或clang導出函數名稱和變量名稱?

[英]How to export function names and variable names using GCC or clang?

我正在制作商業軟件,但我不希望它易於破解。 它針對Linux,我正在使用GCC(8.2.1)進行編譯。 問題是,當我編譯它時,從技術上講,任何人都可以使用IDA或Binary Ninja之類的反匯編程序來查看所有函數名稱。 這是示例(您可以在左側面板上看到函數名稱):

屏幕截圖

如果進行逆向工程,是否有任何方法可以保護我的程序免受此類侵害? 如果這些功能名稱和變量可以從代碼中自動導出(使用GCC或clang?),是否有任何方法可以導出所有內容,所以我可以編寫一個簡單的腳本,將它們更改為完全隨機的,然后再進行編譯?

因此,您想隱藏/屏蔽二進制文件中的符號名稱。 您已決定要執行此操作,需要獲取它們的列表,以便可以創建腳本來修改它們。 好吧,您可以使用nm獲得該列表,但您不需要任何列表(將名稱重寫到已編譯的二進制文件中-oof ...災難的食譜)。

相反,只要在發行版中執行每個人的操作並strip符號即可! 您還將看到一個更小的二進制文件。 當然,這並不能阻止逆向工程(什么也不能阻止),盡管可以說使上述任務更加困難。

老實說,無論如何,您都應該剝離發行二進制文件,而不是為了防止破解。 普遍的看法是,不要過分地努力防止破解,因為這將不可避免地導致失敗,並以浪費開發時間為代價(並且可能是更難以維護的更復雜的代碼庫/速度較慢的更復雜的可執行文件)和/或對誠實的客戶有用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM