我需要对 Windows CE 可执行文件实现的 CRC/校验和算法进行逆向工程。作为专有协议,它没有说明 CRC/校验和算法。但是,有报告正确/计算校验和的控制台界面,如果消息协议正确,我可以用随机位构造自己的消息:
我观察到,
更改消息中的单个位会完全更改校验和字节。
算法似乎与位置有关,因为我在各种消息数据位置提供了一些单个 1 位消息,其余位为零,并且所有时间控制台都报告了不同的校验和。如果它是简单的附加校验和,校验和将是相同的。
我应用了常见的 XOR、LRC、加法校验和算法、常见的 CRC 多项式(Standerd、CCITT、X-modem)并完成了 [CRC 逆向工程论文][2],但不幸的是我无法通过推导多项式,因为消息类型是固定的,所以无法创建单个 1 位消息。
我的问题:
是否有任何 CRC/校验和算法属性,我可以针对消息进行测试以确定算法是校验和还是基于多项式的 CRC?
有没有办法将程序反汇编中看到的错误消息与相应的汇编指令联系起来?
当它在控制台上报告正确的校验和时,有哪些方法可以调试/查明反汇编代码?内存转储什么的?