Methoden zur Ermittlung des 16-Bit-CRC / Checksum-Algorithmus, der von der ausführbaren Windows CE-Datei verwendet wird?

Ich muss CRC / Checksum-Algorithmus zurückentwickeln, der von der ausführbaren Windows CE-Datei implementiert wird. Da es sich um ein vorschriftsmäßiges Protokoll handelt, sagt es nichts über den CRC / Prüfsummen-Algorithmus aus. Es gibt jedoch eine Konsolenschnittstelle, die eine korrekte / berechnete Prüfsumme ausgibt, und ich kann meine eigenen Nachrichten mit zufälligen Bits erstellen, wenn das Nachrichtenprotokoll korrekt ist:

Ich habe beobachtet, dass

Durch Ändern eines einzelnen Bits in der Nachricht werden die Prüfsummenbytes vollständig geändert.

Der Algorithmus scheint positionsabhängig zu sein, da ich einige einzelne 1-Bit-Nachrichten an verschiedenen Positionen der Nachrichtendaten eingespeist habe, wobei die restlichen Bits Null sind und die gesamte Zeitkonsole unterschiedliche Prüfsummen gemeldet hat. Wenn es sich um eine einfache additive Prüfsumme handelte, wäre die Prüfsumme identisch gewesen.

Ich habe allgemeine XOR-, LRC-, additive Prüfsummenalgorithmen, allgemeine CRC-Polynome (Standerd, CCITT, X-modem) angewendet und [CRC Reverse Engineering Essay] [2] durchgearbeitet, kann aber leider nicht über das Ableiten des Polynoms hinausgehen, da der Nachrichtentyp so festgelegt ist Einzelne 1-Bit-Nachricht kann nicht erstellt werden.

Meine Fragen:

Gibt es CRC- / Prüfsummenalgorithmus-Eigenschaften, die ich anhand von Nachrichten testen kann, um festzustellen, ob es sich bei dem Algorithmus um eine Prüfsummen- oder eine polynombasierte CRC handelt?

Gibt es eine Möglichkeit, die bei der Programmzerlegung aufgetretene Fehlermeldung mit den entsprechenden Montageanweisungen in Beziehung zu setzen?

Welche Möglichkeiten gibt es, um Disassemblierungscode zu debuggen / zu lokalisieren, sobald eine korrekte Prüfsumme auf der Konsole gemeldet wird? Speicherauszug oder so?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage