[討論] 部份隱藏 dll functions
環境主要有兩種情況,不過我想應該大同小異
VC6.0 / Win XP
VS2010 / Win 7 , Win 8
問題敘述
手邊的 dll source code 準備要 release 出去,然後部份 functions,
global variable 必須隱藏起來 (假設叫 HideFunc 及 HideVar ),
不讓收到 release 版 source code 知道,但必須還要達成一個需求
簡單的說,公司內部的人必須可以自由調用 HideFunc 及 HideVar,
而 release 給公司以外之客戶不能調用 HideFunc 及 HideVar,
目前專案是將 HideFunc 及 HideVar 直接寫死在 dll 裡面,希望能有
最小幅度修改,達成以上需求。
我的解法
查過、試過一些方式,目前我是從 VS 的 def 檔做下手,用下面手法完成
HideFunc @1 NONAME
這樣下來,從 DumpBin.exe 或從 DepenceWalker 沒辦法取得其 func name ,
而 HideVar 就算不特別動手腳,試過 DumpBin.exe 及 DepenceWalker
似乎沒辦法取得 HideVar ? 不用特別針對 dll 裡之 variable 動手腳?
(這點想問是不是我測試結果有問題)
接下來的測試結果如下
(1) release 出去的版本只附 .h , .dll ,不對 HideFunc 及 HideVar 做 import ,
即使使用 LoadLibrary , GetProcAddress 還是抓不到 HideFunc 與 HideVar ,
這樣收到 dll 之 client 其實在使用上也麻煩,一般的 dll 函式要抓進來就要
走 LoadLibrary ,沒有 lib 做入口。
(2) 內部使用的版本會再附 .lib , HideFunc , HideVar 就不走 LoadLibrary,
GetProcAddress 取出,直接走 #pragma comment(lib, "my.lib") 去引入。
接下來我有二個問題
(1) MSDN 上其實有記載, 用 def 去做 NONAME 隱藏,其實還是可以由 dumpbin
得到的 order 及 address 去把 function 調用出來,但這部份我不知道實際上
是怎麼實現的?是直接去分析 PE header ? 還是一般會有更簡便或通用的方式?
如果只由 order 及 address 把 func 調用出來很麻煩,或其實這技術還不
普及,我想可能還是考濾走這方法 (前提是若我沒找到比這方法更快速維護的)
(2) 想請問版上先進,是否有不同的方式去達到相同之效果?由於目前只是在評估
階段,想多了解一下其他實現方式,像是安全性更高、或是更容易維護之類的,
這些我都想多了解。
參考書籍
程式設計師的自我修養 - CH 9
msdn : exporting from a dll using def files
http://msdn.microsoft.com/en-us/library/d91k01sh.aspx
謝謝各位不吝賜教,感激不盡。
--
If there is no tomorrow,
I want to see u last time.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.74.188
推
12/01 15:09, , 1F
12/01 15:09, 1F
推
12/01 15:11, , 2F
12/01 15:11, 2F
→
12/01 15:12, , 3F
12/01 15:12, 3F
推
12/01 19:27, , 4F
12/01 19:27, 4F
→
12/01 19:28, , 5F
12/01 19:28, 5F
→
12/01 20:05, , 6F
12/01 20:05, 6F
→
12/01 20:06, , 7F
12/01 20:06, 7F
推
12/01 22:04, , 8F
12/01 22:04, 8F
→
12/01 22:04, , 9F
12/01 22:04, 9F
→
12/01 22:14, , 10F
12/01 22:14, 10F
→
12/01 23:22, , 11F
12/01 23:22, 11F
→
12/01 23:35, , 12F
12/01 23:35, 12F
→
12/01 23:35, , 13F
12/01 23:35, 13F
→
12/02 10:27, , 14F
12/02 10:27, 14F
→
12/02 10:28, , 15F
12/02 10:28, 15F
→
12/02 10:28, , 16F
12/02 10:28, 16F
推
12/02 12:29, , 17F
12/02 12:29, 17F
→
12/03 23:45, , 18F
12/03 23:45, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章