¿Métodos para concretar el algoritmo CRC / Checksum de 16 bits utilizado por el ejecutable de Windows CE?

Necesito realizar ingeniería inversa CRC / Checksum algoritmo implementado por el ejecutable de Windows CE. Al ser un protocolo de propiedad, no dice nada sobre el algoritmo CRC / checksum. Sin embargo, hay una interfaz de consola que informa la suma de comprobación correcta / calculada y puedo construir mis propios mensajes con bits aleatorios si el protocolo de mensajes es correcto:

He observado que

Cambiar un solo bit en el mensaje cambia la suma de comprobación bytes por completo.

El algoritmo parece depender de la posición, ya que alimenté algunos mensajes de 1 bit en varias posiciones de datos de mensajes con el resto de los bits cero y toda la consola de tiempo informó una suma de comprobación diferente. Si se tratara de una suma de comprobación aditiva simple, la suma de comprobación habría sido idéntica.

Aplicé XOR común, LRC, algoritmos de suma de comprobación aditiva, polinomios de CRC comunes (Standerd, CCITT, X-modem) y pasé por [Ensayo de ingeniería inversa de CRC] [2] pero desafortunadamente no puedo ir más allá de deducir el polinomio porque el tipo de mensaje está arreglado de manera no se puede crear un solo mensaje de 1 bit.

Mis preguntas:

¿Hay alguna propiedad de algoritmo de CRC / suma de comprobación que pueda probar contra los mensajes para determinar si el algoritmo es de suma de comprobación o CRC basado en polinomios?

¿Hay alguna forma de relacionar el mensaje de error que se ve en el desensamble del programa con las instrucciones de montaje correspondientes?

¿Cuáles son las formas de depurar / localizar el código de desmontaje en el momento en que se informa la suma de comprobación correcta en la consola? Volcado de memoria o algo así?

Respuestas a la pregunta(1)

Su respuesta a la pregunta