至于Freedome的用途,见官网。https://www.f-secure.com/en/home/products/freedome

这个软件跨平台,采用的是5天体验模式。实际测试下来,新加坡日本澳洲以及美西的节点在非高峰期的速度还可以。那么解决掉5天的模式话,这个软件就比较实用了。在ytube上也有对应的破解,是一个install.cmd文件,打开查看貌似就是执行了一条重新静默安装的命令(未测试,按照这个思路好像这个软件就是每次重新安装就可以实现日期重置一样)。


1)windows平台

通过查看软件安装后的注册表内容,发现freedome在针对5days的读取就是从注册表中键值SubscriptionEnds或者 SubscriptionFailTime 简单读取设定的日期,计算差值,从而实现剩余天数。具体的键值(X64位)位置在:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\F-Secure\Freedome。明白了这个操作,那么这个解决方案就比较简单,第一步修改该两个键值的结束日期(注意对应16进制与十进制的转换)具体日期转换见后面。第二步将该freedome项的权限调整,设置所有用户只能读,不能写。经测试,修改后体验天数会一直维持一个固定数。

尚未测试过了5天后程序是否会自动计算当前日期与安装日期的区别,不过程序对手动修改系统日期不敏感。

这里面有一个可能会出现的现象(有的电脑会遇到):修改并设定注册表权限后,操作切换节点时候有一个小bug。例如默认节点为东京,当手动切换为新加坡节点时,系统会切换成功,但是当主界面处于最前面活动窗口时候,软件会自动切回东京节点上。这个故障的原因应该是:每次软件的窗口变为活动的时候,会读取一次注册表里面的当前节点位置,但由于注册表中已经禁止了写入权限,所以实际上切换节点成功但是无法写入注册表,使得注册表里面的当前节点一直是一个固定值(例如东京节点),所以窗口活动后会自动切换到默认的节点,解决方法也很简单,就是将主窗口关闭掉,在任务栏图标的右键菜单中切换就没有这个情况。(可以通过查询ip地址看看是否切换成功)但是这个情况不是必定会遇到,有时候窗口切换就没有问题(可能与软件自身的一些设置有关系,未细测)


2)android平台

该方案需要root权限。

该方案无效,应该是freedome在系统内写入了记录,但是遍历之后还是没找到这个文件(猜测是卸载数据库里面,比较有嫌疑的目录是/data/system里面)。记录一下失败的操作过程:

       1、正常安装,查看/data/data/appname目录,运行后再查看该目录,软件生成了几个目录,其中有一个shared_prefs里面有几个xml文件记录了该软件的试用过期时间数据,如subscriptionends,subscriptionfailtime这些,尝试修改一个较远的日期,重新运行发现修改没起作用,重新查看此xml文件,发现已经被自动修改为原来的数据;尝试失败;

      2、修改上面的xml文件,并设定该文件为root用户组,并赋予只读权限,重新打开程序发现还是不起作用,退出后xml文件未被修改(权限起作用),说明这几个xml文件纯粹就是一个摆设,对试用日期的计算没有半点作用。

      3、清除app缓存数据,卸载软件,再重新安装,启动程序后发现这个记录依然还是按照第一次安装的日期来计算,说明重新安装不会覆盖第一次安装的日期记录;

      4、根据最早安装的日期时间来搜寻整个根目录下发生修改的文件,尝试了十几个可疑文件(内部带有freedome安装日期记录)后,还是没有起任何作用。

     5、整体的尝试以失败告终,分析软件在安装的时候,apkinstaller具有system的权限,可以将第一次安装的freedome的日期写入某个文件(或者数据库记录),而删除卸载之类的操作却没有触发清除该记录,这样后面的freedome每次安装时候会检测原先是否有安装记录,如果有则不写入,所以每次运行freedome都能识别到第一次安装的日期记录,并获得正确的试用天数结果。


后来重新刷机测试了一遍,飞行模式程序提示了错误,估计应该是因为联网读取了设备id相关信息存储到了freedome服务器上去了。所以本地无论怎么安装卸载都不会影响到服务器上的第一次安装的数据。

用xpose+修改id的方法来使服务器误以为这是一台新设备,从而获得全新的试用期限,估计这个是比较简单的办法。

再有就是反编译,对源码进行修改了。



该软件的安卓版本采用的也是同样的方法,一样是通过读取日期来计算事件差值。不过安卓系统对文件权限的修改有些不同。

体验日期的记录在/Data/data/freedome.app.name/shared_prefs/setting.xml有记录,里面存储的内容基本上就是windows注册表的内容。

目前尝试的方案:修改setting.xml文件中的有关日期结束的值,如subscriptionends,subscriptionfailtime这些,对应的就是许可结束和许可失效的日期,修改此数值(或者不修改次数,保持5天体验),然后将该文件的权限设置为全只读,将该文件所有者设置为0-root。

经测试,该方案未测试结束,目前测试的结果是settings.xml文件权限被锁定,freedome貌似不能修改它权限,也无法修改该文件本身,但是手动修改的过期日期不起作用,猜测应该还有其他文件存储该记录数据。等24小时候再测试看看是否有变化~如果无变化,那么说明修改可行,如果不成立,那么说明原记录的位置没有找对!


3)关于日期转换为16进制的计算

Freedome中对日期的存储采用的是十六进制,例如2020/08/31的日期,在记录里面存储的十六进制为:0x5f4c7012,该值对应的十进制为:1598844946,该十进制数值表示的当前日与1900/1/1 0;00的秒数差值,逆向推算如下:

1598844946/60/60/24=18505.14984天,

但是因为在excel里时间0的话是1900/1/0 0:00:00年开始,但是在程序里0是1970/1/1 8:00:00,所以还要加上这段时间转化单元格格式为数值的:25569.3333333333,

所以在excel里面该数值实际上应为:18505.14984+25569.3333333=40074.48317,

将该数字格式转换为日期格式,也就是2020/08/31,转换成时间为:11:34:46,即表示该软件安装在系统里面的日期为:2020/08/31 11:34:46。

可以在excel中设定一个新日期(时间无所谓),按照上面方法再次反向转换可以获得一个该日期的十六进制数据。


4)评价

freedome作为一个免费的工具,整体速度上属于一般般,如果是临时应急用还是很推荐的。对比VPS的速度话还是要差一些,没有ytube上评测的那么好。而且这个软件有一个弊端,就是默认全局,而且没有地方可以修改设置pac模式,这样会导致国内的站点以及本机上软件访问国内网络过慢。

有条件还是建议选一个好的线路上VPS+V2RAY。有信用卡的去上google,没信用卡的去上亚马逊。