xor eax,3 为什么输入会改变它的方式?

逆向工程 部件 调试 x64dbg 异或
2021-06-20 09:51:45

我是逆向工程的新手,我正试图弄清楚 xor 在这个小程序中到底做了什么。我知道如果我输入 0 以外的任何数字,我会得到一个 xor eax,3 所以如果我输入 1 我得到 2 如果我输入 2 我得到 1 如果我输入 7 我得到 4 我只是想了解为什么。

在此处输入图片说明

1个回答

在 中C,这个函数看起来像这样:

int fun()
{
    int a;
    // some code you haven't pasted here; probably scanf("%d", &a);...
    if (some_condition)
        a ^= 3; // xor a with 3
    else
        a ^= 2; // xor a with 2
    printf("a = %d.\n", a);
    return 0;
}

只有您与我们分享的片段,我不能再说什么了。如果有什么神奇之处,它包含在您尚未上传的部分中。