【发布时间】:2019-08-21 22:00:04
【问题描述】:
在对使用位移位操作的 C 代码进行逆向工程时,我对获得以下逆向代码背后的方法感到困惑。
unsigned char red = 37;
unsigned char blue = 100;
unsigned char green = 77
unsigned short us = (red << 8) + (blue);
us = (us << 5 ) | (us >> 11);
unsigned int threebytes = (us << 8) + green;
由于 NOT 是反转位的操作,我假设我可以实现 NOT 以反转每一行或代码末尾的位,但是,我的结果与导致我的预期输出不匹配相信我误会了。我对逆向工程有什么不了解的地方?
【问题讨论】:
-
那不叫“逆向工程”,这里也没有
NOT操作。如果你不知道运算符是什么,你需要先阅读一本 C 的书来代替 -
我不关注这里。如果向左移位,则可以通过向右移位来反转操作,反之亦然。
-
你没有解释你的预期输出是什么。请这样做,并为输入和输出使用二进制。
标签: c bit-manipulation reverse-engineering