[問題] 如何將名稱隱藏起來

看板C_and_CPP作者 (noOneKnows)時間12年前 (2013/10/23 22:41), 編輯推噓3(3017)
留言20則, 4人參與, 最新討論串1/2 (看更多)
小弟需要把 release 出去的 .so 檔, 變數和函數的名稱隱藏起來,還有 class, struct, namespace 的名稱也都要隱藏起來。 所以常數就採取這樣宣告 static const int CONSTANT_NUMBER = 0; 全域變數就這樣宣告 static float myData = 0.0f; 函數就這樣宣告 static void myFunction(); // prototype static void myFunction() {} 不過 struct, class, & namespace 不知道要怎麼藏起來。 最簡單的情形假設 struct, class 裡面有 static 變數就整個破功了。 namespace 好像只要裡面不要有看得見的東西,自己的名稱就不會出現。 那請問有什麼好方法嗎? 另外,請問有什麼工具可以看 .so 檔中 可見的函數和變數名稱清單,是否可以推薦呢? 感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.241.67.33

10/23 23:05, , 1F
typedef?
10/23 23:05, 1F

10/23 23:06, , 2F
請問是什麼意思呢?
10/23 23:06, 2F

10/23 23:08, , 3F
objdump -CT filename.so 和 nm -D filename.so
10/23 23:08, 3F

10/23 23:08, , 4F
還有大絕招 strings filename.so
10/23 23:08, 4F

10/23 23:14, , 5F
出現好多沒看過的關鍵字,要好好研究一番了
10/23 23:14, 5F

10/23 23:15, , 6F
感謝感謝,還有嗎還有嗎
10/23 23:15, 6F

10/23 23:16, , 7F
不過那個大絕招是?好像 GOOGLE 不太到阿(搔頭)
10/23 23:16, 7F

10/23 23:21, , 8F
呃, 一般來說 UNIX command 應該用 man 去看說明書啊
10/23 23:21, 8F

10/23 23:24, , 9F
10/23 23:24, 9F

10/23 23:34, , 10F
可是我是在 windows 上 compile android 的 so 檔耶
10/23 23:34, 10F

10/23 23:38, , 11F
那就是你的問題了, 我都在 Linux compile Android 的 .so
10/23 23:38, 11F

10/23 23:40, , 12F
-fvisibilty=hidden ?
10/23 23:40, 12F

10/24 00:03, , 13F
樓上這個好!!! 感恩感恩!!!
10/24 00:03, 13F

10/24 00:07, , 14F
ㄟㄟ好像不一樣說,我只想把名稱隱藏起來
10/24 00:07, 14F

10/24 00:07, , 15F
-fvisibilty=hidden 應該還是看得到只是不能 link ?
10/24 00:07, 15F

10/24 08:55, , 16F
用 -fvisibilty=hidden 編譯完後,strip target.so
10/24 08:55, 16F

10/24 08:56, , 17F
這樣 objdump -t/-T 都看不到 symbol
10/24 08:56, 17F

10/24 09:00, , 18F
針對單一目標請在 source 加
10/24 09:00, 18F

10/24 09:00, , 19F
__attribute__((visibility("hidden")))
10/24 09:00, 19F

10/24 21:54, , 20F
阿了解了,感謝!!!
10/24 21:54, 20F
文章代碼(AID): #1IP-0Xby (C_and_CPP)
文章代碼(AID): #1IP-0Xby (C_and_CPP)