作者qrtt1 (有些事,有时候。。。)
看板java
标题Re: [问题] 程式包装後交给客户的问题
时间Sun Dec 16 11:14:28 2012
※ 引述《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)