看板 C_and_CPP 關於我們 聯絡資訊
https://www.facebook.com/x43x61x69/posts/780870938716449 昨天看到很多人傳這一篇文章 我發現周遭很多人都會犯一樣的錯誤。 另外還看到很多新手居然把重要參數寫在 #define (preprocessor)中... (同事的說法 因為編成binary後還是明碼 甚至可以直接開檔改 所以建議重要參數不要放在 preprocessor) 想問一下有什麼書在教安全程式的寫法 像是避免strcpy的buffer overflow攻擊之類的 -- C++是雙截棍,揮舞起來很強悍。 很吸引人,但需要你多年的磨練來掌握。 很多人希望改用別的武器。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.214.17 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1459949046.A.0A8.html ※ 編輯: Clangpp (114.37.142.207), 04/06/2016 22:01:07
Hazukashiine: 把重要參數寫在 #define 錯了嗎?不是很正常? 04/06 23:00
ronin728: 同樓上,求指點 04/06 23:03
Hazukashiine: 沒有提及C語言的 Macro 有何安全性問題 04/06 23:06
Hazukashiine: 只有 VBA-type/WindWord Macros 可能有病毒攻擊 04/06 23:06
james732: 同一樓,不懂為什麼寫在參數有問題...? 04/06 23:15
king37937: 萬無一失的程式碼-終結 C & C ++ 軟體漏洞 <= 這本? 04/07 02:21
Clangpp: 我更正一下 重要參數是指密碼的部分 我記得沒錯很容易被 04/07 08:04
Clangpp: 反組譯 跟加密相關的參數都建議不要放在code當中 04/07 08:05
Clangpp: 有錯可以更正我一下 因為我是聽同事講的 04/07 08:07
Clangpp: 理由是上面描述的 04/07 08:08
※ 編輯: Clangpp (114.37.181.229), 04/07/2016 08:18:45 ※ 編輯: Clangpp (59.124.167.226), 04/07/2016 09:07:08 ※ 編輯: Clangpp (59.124.167.226), 04/07/2016 10:41:58
Schottky: (笑到翻肚) 那用 const 就不會被反組譯看到喔? 04/07 10:56
已修正了 感謝
Schottky: 你那同事真的有反組譯過自己或別人寫的程式嗎? 04/07 10:56
Schottky: 電腦安全是另一個領域,而且是進階課程,認真要做的話, 04/07 11:01
Schottky: 成本非常高,不過你若只要單純討論一個實際遇到的問題 04/07 11:02
Schottky: 像是現在這個密碼問題,我蠻願意聊聊的 04/07 11:03
Schottky: 如果要看書,我推薦 Bruce Schneier 的 Pratical 04/07 11:05
Schottky: Cryptography 第 9 和 16 章 Implementation Issues 04/07 11:05
Schottky: 它有教你一點點訣竅,且告訴你不要妄想看個兩章就變行家 04/07 11:06
Clangpp: 喔喔喔 感謝 願聞其詳 因為我也希望能夠導正觀念 04/07 11:29
Clangpp: 有時候我們接收錯誤的觀念太多 所以我想要理解什麼是正確 04/07 11:30
Clangpp: 的 04/07 11:30
Clangpp: 這種東西我一直很有興趣 但是不知道從哪邊入門 04/07 11:30
Clangpp: 所以 密碼不建議放在preprocessor是正確的嗎?? 04/07 11:34
Schottky: 密碼喔... 我想你得先把整件事講清楚才有辦法討論... 04/07 11:42
Schottky: 什麼密碼? 程式如何使用? 要防範什麼樣的威脅? 04/07 11:42
Schottky: 如果直接這樣問我,我會告訴你放哪都會被反組譯出來 04/07 11:43
Schottky: #define 最後還是會處理完再代入該放的位置,那個該放的 04/07 11:46
Schottky: 位置大概就是你說的 const,再轉成 binary 一樣是明碼 04/07 11:46
※ 編輯: Clangpp (59.124.167.226), 04/07/2016 12:32:55
TobyH4cker: 也有可能是runtime時放進stack,但兩者靜態分析都秒爆 04/07 18:54
L4ys: 明文只要在 memory 中出現過就抓得出來,沒有例外 04/07 22:48
LiloHuang: 簡單弄可以買一套虛擬機保護的加殼器,找沒自動脫殼的 04/08 09:51
LiloHuang: 複雜一點的就是自己的殼自己做,反反編譯跟反靜態分析 04/08 09:55
descent: 萬無一失的程式碼:終結C&C++軟體漏洞 參考一下 04/08 12:23
Schottky: 加殼(程式碼加密)有個小麻煩,防毒軟體會把你當病毒 04/08 12:57
Schottky: 因為病毒超愛用這招來躲防毒軟體的掃描 XDDD 04/08 12:57
LiloHuang: 多數時候是防毒軟體太弱,只能識別殼的部分特徵或行為 04/08 14:25
LiloHuang: 不管三七二十一就判斷是病毒,只能手工加殼加花多測試 04/08 14:28
LiloHuang: 防止逆向工程跟免殺技術是正反兩面 04/08 14:28
TobyH4cker: 要買正版,既然買了也順便買簽章吧(X 正版才不易被殺 04/09 04:04