问题描述
如题!!!怎么不被别人盗用。
解决方案
解决方案二:
你是为了防止别人反编译,还是为了防止别人到处复制,安装?防反编译的话,主要是靠混淆器(obsfucate/obsfucator),并且在关键代码处,人工加入一些很奇怪的代码,比如:finalstaticintfoo(intx){return~(~x+1);//恒等式x-1}
x=foo(x)等价于x--;x=foo(foo(x))等价于x-=2;try{if(x==1){thrownewIllegalArgumentException("xcannotbeequaltoone!");}elseif(x==2){returnx+2;}thrownewFileNotFoundException();}catch(RuntimeExceptionex){returnx+1;}catch(IOExceptionex){returnx+3;}finally{}
这样的代码达到switch-case/if-elsif的目的,使得反编译出来的代码可读性很差。对于防止到处运行,主要是绑定MachineID,所谓的MachineID主要是指CPU,网卡MAC,硬盘等信息。这些信息一般都通过JNI获取,可以参考我这个帖子。然后在一些隐蔽的地方,进行这个check。比如,我曾经做过的一个check是放在log4j里面,只不过,那个log4j我是偷换了class文件的。如果为了防止对方试用后不付钱,可以考虑结合系统时间。为了防止对方拨回系统时间,可以考虑每次开始运行的时候记录一下,比较时间有没有大幅回调(一天内的回调还是允许的)。也可以查看系统文件夹下某些文件的最后更新时间。超时之后,决不客气,把数据库drop掉,把服务kill掉....
解决方案三:
道高一尺魔高一丈还是想想怎么把自己东西做的更完美一点。。。
解决方案四:
用混淆器照样能反编译别人要看源代码你也阻止不了