这几个月刚接触crack,每天都看到前辈高手们的文章里,写些什么CRC校验,于时就在网上找了好多相关的资料,同时也找了加密与解密光盘上的那篇译文,发现,不是写的过于简单,就是写的过于复杂,有的还兜了好几个圈圈,看的俺是一头雾水~~~~~最后,没有办法,就找到的罗大大的汇编源代码,再配合光盘上的那篇文章,得出了CRC32校验的一个流程,不知道我的理解是否正确,如有错误之处,还请大大们指出,小弟不胜感激
首先,生成一个256组的32位码表(用于和运算过程中的CRC值做异或运算.当运算结束后,就不起作用了,我想许多新手都和我一样,最开始都不能理解这个码表的作用是什么,我在这上面也兜了好多圈圈,个人觉得,这个码表的生成公式可以自已写,没必要按照文章上的那个循环得到.)
再次,设4个变量,
1, a 32位的变量,用来存放CRC,要设一个初值.教程里设的是0xffff
2, b 是8位的变量 (用来临时存放需要处理的字节,与下面的c配合使用)
3, c 32位,初值存放需要CRC校验的字符串或文件的第一个字符的内容的首地址
4, d 32位,初值为指向256组码表的首地址
得到需要CRC校验的字符串或文件的长度e
{循环 e 次
把变量c指向的内容附值给b
变量b的变量a的后八位做异或运算,并将结果保存在b
去掉变量a后八位,在其前8位用0填补(也就是 右补8位)
然后再和码表d的第b项(相当于高级语言里的数组d
)做异或运算结果存放在a.
c+1(指向下一个字节)
}
再把变量a的值取反,所得的值就是最后的CRC
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课