目录
- 功能块的保护方法
- 对PLC程序进行加密保护
- 对PLC进行CRC32保护
- 功能块的恢复
- 特殊的功能块恢复
功能块的保护方法
对去除 Output FB Definition 和Matching check of FB Definition前面的勾选项的PLC。在编译后,不对输出的ROM文件进行功能块定义输出。
实际进行数据分析,可知。功能块的定义无论是否选择该选项,定义始终会输出到ROM文件中。设置了该选项,仅对Lad的编辑软件起作用,影响到软件反编译时,通过该设定参数,是否把FB的定义输出到反编译的文件中。
对PLC程序进行加密保护
对于OiF Plus以后的PLC,Fanuc推出了程序文件加密保护功能。即编译参数Use protect file format。设置了该位后,ROM格式的PLC数据就不在是明文了,采用了AES128加密算法对除的PLC头以外的数据进行了加密。防止用户随意更改PLC数据,导致数据泄露问题。
通过某些方法,可以把加密的程序去除加密状态。
Rom文件@0x353 [Byte] PLC_FILEPROTECT_FLAG==0x80 PLC文件保护了
@0x2A0 UBYTE[16] PLC_File_Protec_Key //AES128加密密钥
对PLC进行CRC32保护
@0x26C DWORD CRC32_OF_PLC,对ROM文件进行CRC32位校验运算。
早期的FLAD软件,对该位检测不严格,随意更改PLC文件数据,不会影响其在CNC上的运行和PC上的反编译。OiF后,CNC在加载PLC数据时,会对程序进行CRC校验,不通过时,PLC不再加载运行。PC侧8.0以上的软件开始也会对需要反编译的ROM文件进行校验,不通过的无法反编译。
FanucPMCCrc.exe PMC1.000 PMC1.001
通过执行上述命令,可以更新修改后PLC的ROM文件CRC32数据。
CRC32算法如下:
uint CRC;//int的大小是32位,作32位CRC寄存器