Re: [問題] 程式包裝後交給客戶的問題

看板java作者 (有些事,有時候。。。)時間13年前 (2012/12/16 11:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《caago123 (絕望的村民)》之銘言: : 我是PHP工程師 在學校有摸過java : 目前有個需求是客戶要能將程式免費給網友下載 : 但網友必須輸入序號才能使用該軟體 : 我的想法是 : 在程式裡寫死網址 : 將序號以get的方式傳到該網址 : 接下來由伺服器判斷該序號的權限 : 現在程式寫好了 : 但我是包裝成 jar 檔 : 想請問這樣作安全嗎? : jar檔會被反編譯破解嗎? : 關於這樣的需求有更好的作法嗎?? : 感謝!! 雖然不知道怎麼樣不被破解, 單純以實驗的角度來看... 1. 偽裝 server 2. 用 class shadowing 繞過驗證 [偽裝 server] 如果你 server 設計的太簡單,像是只在一開始問一下 server 回 0 or 1 的結果(實際應該沒有人把要保護的內容設計成這樣) 可以輕易地觀察出成功與失敗的回應結果 那只要把 local dns 對應的 domain 改掉,自己寫個 server 去驗證就好了。 例如將:www.mylicenseserv.com 對應至 127.0.0.1 開個 80 port 吐 0 or 1 所以,要做 license 驗證的情況,通常都不會把 server 寫得太簡單 或是變動性的驗證規則 [class shadowing] 如果你的驗證方法也是無關 server 狀態追蹤的 那可能就只是在某個 class 下有個 return true or false 的 method 那麼 decompile 那個 method,把那個 method 的內容清掉 public boolean isValidUser(){ return true; } 在啟動時,把這個加工過的 class 放在 classpath 的第一順位 應該就能蓋掉原來的 class 的行為。 當然還有許多方法可以破/防 寫這些只是先提醒你,不要把東西弄得太簡單。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.121.194 ※ 編輯: qrtt1 來自: 114.43.121.194 (12/16 11:15)
文章代碼(AID): #1GpJoMzg (java)
討論串 (同標題文章)
文章代碼(AID): #1GpJoMzg (java)