当前位置: 首页 > 知识库问答 >
问题:

确定Windows CE可执行文件使用的16位CRC/Checksum算法的方法?

段弘和
2023-03-14

我需要对windows CE可执行文件实现的CRC/CHECKSUM算法进行逆向工程。作为先验协议,它没有提到CRC/CHECKSUM算法。但是,有一个控制台接口报告正确的/计算的校验和,如果消息协议正确,我可以用随机比特构造我自己的消息:

我观察到,

>

  • 更改消息中的单个位完全更改校验和字节。

    当反汇编代码在控制台上报告正确的校验和时,有什么方法可以调试/定位反汇编代码?内存转储还是怎么的?

  • 共有1个答案

    方斌
    2023-03-14

    试试CRC Reveng。用你的数据做的一些快速尝试都没有结果,但我没有很努力。考虑不仅要尝试所有十个消息字节,还要尝试最后八个和最后六个消息字节。

    此外,您可以在同一网站上找到我所知道的最全面的已知CRC列表。

    更新:

    00000000000122b5 ^ 0000000000022421 = 0000000000030694
    0447080a300130A1 ^ 0447080a30023635 = 0000000000030694
    
    0447080a300130A1 ^ 0447080a30043A36 = 0000000000050a97
    00000000000122b5 ^ 0000000000042822 = 0000000000050a97
    
     类似资料:
    • 我正在努力对与CRC-16校验和相关的一段数据进行反向工程。我知道用来计算原始校验和的多项式是,但没有别的,我不知道初始值(如果有),最终异或值(如果有),如果输入或结果被反映... 似乎有一个已知的CRC-16生成器使用thing polynom,CRC-16-CCITT,但尽管我尝试了所有的方法,我还是不能理解原始校验和是如何计算的。

    • 我试图通过串行通信协议与设备通信,但在查找消息的最后2个字节使用的校验和/CRC算法时遇到了一些困难。我在各种在线crc实用程序中尝试了几种CRC16算法,比如:http://www.sunshine2k.de/coding/javascript/crc/crc_js.html http://www.zorc.breitbandkatze.de/crc.html 我也尝试了逆向工程,在REVENG

    • 我有一个通过RS232 COM与计算机通信的终端。我得到的协议说,我必须发送一定的字节组合和CRC 16 IBM计算的数据在最后发送 我还得到了一个C编写的应用程序,我可以用它来测试,该应用程序编写了一个带有发送数据和接收数据的日志。在该日志中,我查看是否向终端发送了以下字符串。我还必须发送数据06 35的这个CRC16 IBM结果。 我已经设法以某种方式将作为示例给出的C方法翻译成C#。但我的结

    • null 有人有过同样的问题吗?它是否与变量上设置的路径相关?

    • 因此,我的问题是:如何从整数结果到所需的双十六进制结果?我试了几个选择,都没有成功。 注意:我使用的是Qt,所以如果有人能找到实现QByteArray或其他Qt友好代码的解决方案,我会很高兴的。无论哪种方式,不使用Qt、C或C++的解决方案都是无用的:P