JetBrains家族的全家桶同时破解idea,datagrip等多个产品
简述:在安装datagrip后,修改idea的scripts中install.vbs和uninstall.vbs两个脚本文件中的一个数组,去除datagrip这个元素,这样再破解idea的时候,就不会将之前datagrip的脚本文件所配置的环境变量删除,从而实现双破解。之前尝试过重装软件,这也是显然不行的,因为脚本代码执行,就检测破解的内容。(这里的install、uninstall是指install-all、uninstall-all、这个和install-current不同的是,这个all是包含所有用户,current只准对当前用户)
1. 附:另外如果想只有一个script脚本破解多个产品的话,就要找到符合该脚本格式的不同产品激活码,而不能从网上随便乱找不同格式的激活码
源码展示:
install-all.vbs

uninstall-all.vbs

详解:破解JetBrains家族的全家桶,里面的脚本文件(有两个,一个是安装install,一个是卸载uninstall),先解析:uninstall,为了破解方便,所以脚本源码里定义了一个数组,遍历环境变量的时候会逐个比较数组中的元素,这些元素就是jetbein公司的产品名称:idea,parcharm,datagrip等,避免了之前某些产品被破解过,如果不删除旧的脚本变量就可能会产生冲突。当成功安装某个jetbein家族产品的时候,在执行脚本文件的时候,脚本是不会检测到你想破解的某个产品,uninstall是将之前所有被破解的而设置的脚本变量删除。
分析install:install也有一个数组,里面也是放产品名称,但是先执行了uninstall确保了删除之前被破解的而存在的变量(判断的是k,v),install里面也有一个判断,用正则表达式判断的是jar包里面的内容是否含有破解脚本的一段代码re.Pattern = "^-javaagent:.[/\]ja-netfilter.jar.",所以如果uninstall没有检测出来的k,v,一旦install再次运行,会更具体的检测内容,确保了一定不会与被其他不同的破解脚本所添加的代码冲突,install会删除这段代码,并且重新添加,写成自己的脚本格式,install也不会检测用户到底想安装哪一个产品,也是全部更加彻底的扫描一遍,删除已经破解的环境变量,所以这个时候用户之前的破解产品变的和刚下载的新产品一样,都重新需要激活码,但是一个产品只对应一种格式的激活码,激活了这个产品,另一个产品就显示无法激活,激活码失效的情况。用某一类的脚本进行破解的,就必须要用该类格式的对应产品激活码,用另一个脚本的激活码,是无效的。所以既然是两个脚本,虽然运行原理大致相同,但是某些变量,代码格式不同,导致破解后所需要的产品激活码格式不同,
最终,激活码的有效性一定是对应各自的脚本文件才能生效,所以只要先用脚本1破解产品1,然后修改脚本2中的数组元素,将产品1的名称元素删除,uninstall和install都要删,然后再重新运行脚本2的两个文件,这样数组遍历的时候就不会删除脚本1的破解变量,从而添加自身的破解变量,也能正常使用自己的产品激活码,从而实现双破解!
所以,猜想的脚本文件一模一样是错误的,因为如果一样,对应的产品激活码格式也一样,那么只执行一个script脚本文件,输入两个不同的激活码就能破解,但实际演示是只能有一个破解成功。(得到这个结果,是因为做了三次猜想:
First、先执行script脚本1,发现破解产品1成功,再执行script脚本2,发现破解产品2成功,但是产品1失效了)
Second、通过第一次实践,猜想是不是因为后执行的script脚本2中的uninstall删除了脚本1的破解变量,所以导致产品1失效,于是不执行uninstall,只执行install,发现产品1依然失效,于是明白后执行的脚本会将前一个脚本覆盖,也就是后执行脚本文件中的install和uninstall代码里都存在检测删除的之前被破解脚本的判断条件
Third、通过前两次实验,决定打开install和uninstall源码进行分析,在这两个文件中都发现了一个存放所有产品名称的数组,并通过代码发现,检测环境变量也是从该数组中查找相对应的元素进行对比,于是发现了产品1的名称,分析代码后判断出每次检测环境变量,都会将所有产品名称遍历一遍,所以我们只要将破解过的产品名称删除,脚本执行的时候就不会检测和删除之前破解的环境变量。这样既能破解产品2,还能保留破解的产品1
结果:两个产品都能破解成功,互不干扰,说明猜想正确!

浙公网安备 33010602011771号