谢谢LZ,,加密思路有了,但如果你这个无法跟烧写配合,虽然比修改源码数组再编译提高了一个档次,但依然是个累死烧写人的活儿。
1 可以将这个做到PC烧写软件中
2 可以将这个做到脱机烧写器,或者联机烧写器下位机中
3 可以做到IAP中,下载完HEX后甚至可以将IAP自身删除掉。需要的多余FLASH就比较多了,至少除了正常程序外还得能放下IAP.
还是对LZ的单片机程序比较感兴趣,对单片机判断部分,求LZ给个演示,
菜农指出最关键的是“无缝隙”概念:就是不要直接将CRC结果比较,那样必须会有if(A==B)或变种,这样别人找到分支,可以用NOP替代就完了。而是直接将CRC段的结果再与设定的CRC结果再运算一次结果必为0,不为0那就是HEX被修改。再用结果0与其它变量异或运算,则其它变量值并不会改。若改动一个字节,则结果不为0,那么CRC结果的结果再与其它变量异或,那么变量的值结果肯定会变,而且是不预知的......代码肯定不会好好运行的。比如定时原先1分钟,现在就可能变成随机数.....哈哈,目的达到了! |