1

たとえば、(Java難読化から)非常にオーバーフローしたシフト値でこれを取得したとしましょう

x = buffer[count + -3] << 0x8f553768 & 0xff00

試してから、私はこれを理解しました..

8 = 0xff 00

16 = 0x ff 00 00

24 = 0x ff 00 00 00

このように難読化を解除しています。

x = ((buffer[coint - 3] << 8) & 0xff)

これは簡単に修正できます..しかし、これらのシフトは本当に苦労してい[+ -]ます。[- +]

0x8f553768 & 31私は等の適切な答えを与えるのような値に AND を使用する手法を見つけました 。次に、符号なしバイトに相当するものに8変換します..0xff000xff

私の質問は、ビットマスクを適切な値に下げる方法です..この例を言ってください

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 に答える