我正在尝试逆转加密方案,但是在使用代数逆转时,我似乎陷入了困境。
对于单个字符(使用寄存器和常量)的加密方案如下:
encrypted_char= (original_char XOR dl) + al
where:
eax = eax.previous * c1 +c2
edx = (eax >> c3)
eax.0 is a known seeded constant.
我想为original_char代数求解该方程式,但是我遇到了一些问题,即独自获取原始char的操作顺序。考虑使用负数进行环绕也使我头疼。
如果有人对如何解决original_char有任何指示,将不胜感激。我最初的想法是先减去al,然后再与dl进行异或运算,但此时我开始感到困惑。
答案 0 :(得分:1)
在发布之前,我曾玩过一个玩具示例,答案如下:
按位异或的优先级与乘法相同,我将其翻转。我已经知道XOR是XOR的逆,但是我认为我应该在这里声明。
结果公式如下:
(encrypted_char - al) XOR dl = al
不需要为了获得正确的解决方案而弄弄较大的寄存器中的内容。
我将使用模数运算以正确的变量大小来解决环绕问题。
使用上述方法,我可以将代码反转。