假设我得到了这个,例如(来自java混淆)具有高度溢出的移位值
x = buffer[count + -3] << 0x8f553768 & 0xff00
通过尝试我发现了这一点..
8 = 0x ff 00
16 = 0x ff 00 00
24 = 0x ff 00 00 00
几乎我正在去混淆看起来像这样。
x = ((buffer[coint - 3] << 8) & 0xff)
我得到了大部分工作,就像翻转[+ -]
所有[- +]
这一切都很容易解决。但这些转变真的让我很难过。
我发现了一种在值上使用 AND 的技术,
0x8f553768 & 31
它给出了8
等的正确答案。然后我将转换0xff00
为无符号字节的等价物。这是0xff
我的问题是如何将位掩码降低到正确的值..说这个例子
i1 << 0xf7c13d2a & 0xfc00 //Aka 0xf7c13d2a & 31 == 10
我开始了..
i1 << 10 & 0xfc00
如何将其降低0xfc00
到正确的值?
我拍了guess
应该看起来像这样
i1 << 10 & 0x3f
但是降低AND
值的公式是什么?