BakoMa Tex可以实时预览Tex编译出的pdf,也可以通过修改预览的结果,反过来影响Tex源码,这个功能是十分有用的。目前官网(http://bakoma-tex.com/menu/download.php)上能找到的最新版是11.80,发布于2018年10月18日,有较长时间未更新了。这个版本不支持中文,中文在预览区无法显示,而且只要中文夹杂了英文,在Tex源码区的中文还会重叠显示,光标也无法正确定位。我把软件的各个和编码有关的设置都修改过,也不能解决中文的问题。所以,BakoMa目前只能拿来写英文论文了。
接下来讲解如何实现无限试用。安装后启动,会出现如下输注册码的窗口,
注意上面的最后一段话,(Installation Serial Number /ISN/ may be required for some kinds of licenses at payment processing. Your installation of BaKoMa TeX has ISN = 262721426),尤其是结尾的ISN = 262721426。底部显示了剩余的试用期,直接点Apply会报注册码unsuitable的错误,点击Evaluate则会联网下载一个试用的License. 既然要联网下载,那么很自然会好奇:如果在断网的情况下点击Evaluate,会出现什么情况呢?
必然会报无法下载试用许可证文件的错误,但竟然连下载地址都给我们展示了。那肯定要把这个地址扔到浏览器的地址栏里,把文件下载了看看。结果这个地址居然无法访问,我之前确实成功下载过许可证文件,怎么就无法访问呢?于是拿出Fiddler进行网络抓包,马上就找到了原因。
原来它分别向.net和.com两个域名发起了下载请求,bakoma-tex.net无法访问,而bakoma-tex.com是可以正常访问的。下载的文件内容如下:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\BaKoMa\Keys]
Deprecated: Function split() is deprecated in /storage/content/70/1008570/bakoma-tex.com/public_html/menu/user-keys.php on line 35
"Request"="3E7DDDE-21D4-3E7A132-2FCA-D0F1-77F4"
"Server"="bakoma-tex.com"
"ReqID"="262721426"
"ISN"="262721426"
"ISN64"="262721426"
"ViD"="6929"
"Status"="0"
"Message"="Success"
"Count"="29.333333333333"
@="701578c1-fe4a4939-41596a5d-c07703cd"
这是可以导入Windows注册表的文件,下载完后它会自动执行导入。"Count"="29.333333333333"应该就是指试用30天,(在注册表中把Count改成一个更大的数并没有用,不能增加试用时间),最后一项可能就是试用注册码。换一台电脑(虚拟机)下载试用许可证文件看看:
"Request"="3E7CF7F-4DB3-3E7D615-BB1E-E538-4954"
"Server"="bakoma-tex.com"
"ReqID"="490000303"
"ISN"="490000303"
"ISN64"="490000303"
"ViD"="6929"
"Status"="0"
"Message"="Success"
"Count"="29.333333333333"
@="4fef0bed-fb71ec99-673525ed-e6fad68d"
已经能看出一些规律了,Server、ViD、Status、Message、Count这5项对不同电脑都一样,Request、ReqID=ISN=ISN64、@这几项不一样。Request由5个“-”分成6段,第一段和第三段的开头都是3E7,如果去掉3E7,那么6段都是4个16进制位了(CF7F-4DB3-D615-BB1E-E538-4954)。首先想到的是尝试随意修改Request(3E7还是保留),看能否成功下载许可证文件,结果如下
"Status"="3"
"Message"="inconsistent request"
看来不是随便改改就能搞得定的,服务器会对Request进行校验,不符合预设规则就不生成许可证文件。那我们再猜一猜,ISN会根据电脑的什么信息生成呢?比如CPU、硬盘、主板、网卡的序列号,先找个小软件改改硬盘序列号呗。
运气很好,在虚拟机中修改硬盘序列号后,ISN由490000303变成了103180492,然后就有新的Request,可以下载新的试用许可证文件了,又能获得30天的试用期了。另外,用IDA或者OllyDbg打开安装路径下的texword.exe,能在其中找到对GetVolumeInformationA的调用。BakoMa是用wxWidgets开发的,弹出提示对话框的API是wxMessageBox.
所以,无限试用的方法就是,在前一次试用期结束之后,用软件修改硬盘序列号,在注册表中删去HKEY_CURRENT_USER\Software\BaKoMa\Keys这一项,然后启动Bakoma,点击Evaluate重新下载许可证文件,就又能获得30天试用期。
来源:oschina
链接:https://my.oschina.net/u/4266314/blog/4663380