【问题标题】:Reversing algebraic equation with bitwise-XOR用按位异或反转代数方程
【发布时间】:2018-11-07 21:51:42
【问题描述】:

我正在尝试反转加密方案,但在使用代数进行反转时,我似乎陷入了困境。

单个字符的加密方案如下(使用寄存器和常量):

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 进行异或运算,但此时我开始感到困惑。

【问题讨论】:

    标签: assembly encryption reverse-engineering


    【解决方案1】:

    发帖前我玩了一个玩具样例,我的回答如下:

    按位异或与乘法具有相同的优先级,我只是将其翻转过来。我已经知道 XOR 是 XOR 的逆,但我想我应该在这里说明它。 结果公式如下: (encrypted_char - al) XOR dl = al 无需处理进入较大寄存器的内容即可得出正确的解决方案。

    我将使用适合我的变量大小的模运算来解决环绕问题。

    使用上述方法,我能够反转代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2014-12-30
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多