1

假设我得到了这个,例如(来自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值的公式是什么?

4

1 回答 1

1

哈哈解决了我的大脑做了计算..

该死的,为什么答案对我来说如此困难..

i1 << 10 & 0xfc00

然后你做

0xfc00 >> 10这给了你0x3f

于 2011-07-24T02:43:47.723 回答