软件分发给不同客户之后,安装包只要一被人转发,单看文件名就很难弄清楚它最初的来源。要明白Obsidium水印信息怎么添加,水印信息被改动后又怎么发现,有一个关键的地方,就是得把水印标识、版本记录和文件完整性检查这三样东西分开来处理。Obsidium这个工具能够把水印数据内嵌到受保护的程序文件里面,以此来追踪软件的泄漏源头;同时它还能在程序启动的时候去检查指定的文件,看这些文件是不是遭到了没有经过授权的修改。
一、Obsidium水印信息怎么添加
在动手添加水印之前,先要确定下来的事情是,每一个交付出去的软件包需要靠什么信息来做区分。水印里面填的内容不必写得太长,更不要直接把真实的姓名、电话号码这类信息塞进去。相对稳当的做法是使用客户编号、订单编号、交付批次和版本号。
1、打开保护项目:先把Obsidium启动起来,新建一个保护项目,或者打开之前已经建好的项目,接着把需要发布的EXE或者DLL文件导入进去。随后要确认一下文件的位数跟当前的保护版本是不是互相匹配的,完成了这些,再进入项目配置里面水印设置的那个区域。在不同版本的工具里,设置界面的位置可能有细微的差别,不过功能名称里面一般都会包含“Watermarks”这个词,照着它找就行。
2、填写可追踪标识:按照每个交付对象的不同,把对应的水印值填进去,比如填写CUS023、BUILD202606、ORDER0815这样的字符串。同时,更建议把客户编号、软件版本和发布的日期同步地记录到一份内部的交付台账上面,不要只把标识写进文件里就不再做任何留存了。
3、执行保护并单独输出:发给不同客户的安装包,它们都应该从同一份最原始的程序来生成,千万不要拿一份已经带过水印的文件再去继续叠加保护。输出的目录可以按照客户编号和版本号分开来建立,这样在交付的时候就不容易把属于不同客户的文件给发混。
4、检查版本限制:Obsidium官网上的资料说过,水印功能在不同的产品版本里面是存在差异的,评估版本里的水印功能处于被停用的状态。如果在设置界面找不到水印相关的选项,那就要先核对一下目前拿到的授权是哪个版本,没必要反反复复地去重装软件。
二、Obsidium水印信息被改动后怎么发现
水印这个机制更合适的用处是去追踪交付的来源,不适合让它独自去承载所有的防篡改判断。当文件遭到修改之后,实际需要去确认清楚的事情,是程序的主文件、它依赖的那些文件还有交付的记录有没有变动。
1、开启文件完整性检查:在保护项目的设置里面,把File Integrity Checks这一项配置起来,需要接受验证的EXE文件、DLL文件还有那些关键的配置文件,全部都要加到检查的范围里去。Obsidium官方的说明提到,受保护的程序启动的时候,可以去验证用户所指明的那些文件,一旦发现有未经授权的改动,就会直接拒绝往下运行。
2、保留发布包的文件指纹:每一次正式交付之前,对EXE文件、DLL文件和安装包生成一个文件指纹,有时候也叫做哈希值,然后把这个数值记到版本台账当中。往后如果收到了可疑的文件,就先计算出它的文件指纹,再拿这个指纹去跟原始交付包留下的指纹进行比对。只要两个指纹的数值不一样,就说明这个文件的内容已经被改动过了。
3、核对水印标识:碰到安装包被意外传播出去的情形,这时候应该用内部保留的那份水印记录去核实当初是交付给了哪个对象。水印的值要能和客户编号、版本号还有生成的时间一一对应上,不能只靠着文件名字就去下判断。文件名字很容易被随手改掉,水印和发布台账反而更有参照的意义。
4、留下异常样本:可疑文件拿到了以后,不要直接把它覆盖掉或者是删除掉。最好是单独保存一份文件的副本,并且同时记下它的文件指纹、被发现的时间、来源路径还有运行的日志。有了这些信息,以后才能去区分这到底属于二次分发、文件自身损坏,还是说程序被人重新打包封装了。
三、Obsidium水印信息怎么做好维护
水印的维护要是做得没有章法,后面哪怕找到了异常的文件,有很大可能也还是追查不到它对应的是哪一次具体的交付。当项目规模慢慢变大以后,就更应该把水印生成和发版的流程固定成一整套规范的动作,不然时间一长就容易变得越来越乱。
1、建立一套统一的编码:水印值不建议临时想到什么缩写就随手往里面填,比较合适的办法是用客户编号、产品代号、版本号和批次号拼接在一起,组合成一条条规范的标识。等编码的规则变得统一了之后,不管是谁一看到记录里那一串标识,都能够很快地定位到与之对应的交付包,减少翻找和猜测的麻烦。
2、原始文件单独存放:那些还没做过保护的原始程序文件、保护项目的工程文件、针对各个客户输出出去的安装包,还有文件指纹的记录以及交付清单,这些不同类型的材料都应该分开放在不同的目录里面。原始的程序文件只保留下来用于日后再重新生成带水印的包,不要把它直接当作交付成品发给客户。
3、发版前安排一下抽查:快要正式发版的之前,可以随机抽几个输出好的安装包实际运行看看,确认一下程序能不能正常启动起来,文件完整性检查的功能会不会生效,还有水印记录跟交付台账能不能保持一致。万一碰到某个客户的包运行出现了异常,要退回到对应项目的配置里再去排查原因,不要急着把所有的文件一下子都批量发出去。
4、有变更就重新生成:程序经历过升级,或者是它所依赖的某些文件出现了变化,再或者是保护方面的参数做过调整,在这类情况下都必须重新生成带有水印的包和配套的文件指纹记录。旧版本的台账要继续保留下来当作备查的依据,不过千万要和新的台账分开存放,不能把它们混到了一起,免得将来需要追溯的时候搞得一团乱。
总结
软件保护这件事真正让人觉得费劲的地方,很多情况下并不是把某一个保护开关给点开,而是到了后续要想去追踪问题的时候,那一堆记录还能不能顺利地互相对上。Obsidium水印怎么添加、水印被改动以后该怎么去发现,整体的处理思路其实是蛮清晰的:水印的作用就是给交付的来源做上一个标记,文件完整性检查则是用来察觉哪些地方遭到了异常的修改,而文件指纹和交付台账负责把证据固定并保存下来。这三种手段配合到一块去用,真出现了泄漏或者文件被篡改之类的状况,才更有可能把问题的源头给查得明明白白。