C_and_CPP 板


LINE

環境主要有兩種情況,不過我想應該大同小異 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
1F:推 soheadsome:推程式設計師的自我修養 中國真的不少這樣有水準的書 12/01 15:09
2F:推 cobrasgo:老實說還是走license吧,不然你maintain會很痛苦 12/01 15:11
3F:→ cobrasgo:沒有license,用了就告你,這是我工作幾年得到的最佳解 12/01 15:12
4F:推 purpose:http://dll_hide_part.codepad.org/ 修改標頭檔 my.h 裡 12/01 19:27
5F:→ purpose:面的 IS_INTERNAL 就可以產生不同版本的 dll 供內外部使用 12/01 19:28
6F:→ EdisonX:謝謝 purpose , 用 macro 控制也是一方法. 12/01 20:05
7F:→ EdisonX:@cobrasgo: 簡單的說,我是供應商,不是客戶端,是要防破的. 12/01 20:06
8F:推 Bencrie:c 是在說供應商沒錯啊 12/01 22:04
9F:→ Bencrie: ^大 12/01 22:04
10F:→ EdisonX:了解. 12/01 22:14
11F:→ azureblaze:破解vs防破解 防破解的那方付出的成本永遠比較高 12/01 23:22
12F:→ EdisonX:@azureblaze , 我知道您說的, 只是有時候決策不是我能定的 12/01 23:35
13F:→ EdisonX:可以的話我也希望用幾支 keyfile 就過去了 Orz 12/01 23:35
14F:→ hichcock:若要只能在公司內部用的話, API 內鍵連結 server 最簡單 12/02 10:27
15F:→ hichcock:連不到 server 自動回傳 false就好 12/02 10:28
16F:→ hichcock:server 找公司內的一台電腦架就可以了 12/02 10:28
17F:推 loveflames:用RPC做? 12/02 12:29
18F:→ EdisonX:h 大和 l 大說的意見不錯,之前沒想過可以這樣搞 12/03 23:45







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP