Re: [問題] 程式包裝後交給客戶的問題
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):