我在大学参加这个逆向工程实验室,我们有这个最后的大家庭作业项目。我有二进制文件的一部分,它通过迭代它自己的字节和add-ing 或xor-ing 然后将它们重写回内存来更改它自己的 asm 代码。
我被困在这个函数中,我设法使用 x64dbg 将其反编译为以下(变量命名由我更改)
uint8_t fun_401c05(uint8_t argument) {
uint8_t counter;
counter = 0;
if (argument) {
do {
counter = (uint8_t)(counter + 1);
argument = (uint8_t)(argument & (uint8_t)(argument - 1));
} while (argument);
}
return counter;
}
我试图了解这个函数到底是做什么的。我知道该函数被调用了 3 次,每次都使用我输入文件中的一个字母。然后使用xor一些sar指令处理每个结果(这是我第一次看到它)来计算一个 int 键,该键允许访问挑战的下一部分,我需要了解该函数的作用以赋予它正确的权限输入。我可以看到它的作用,但还不能真正理解它的含义..
编辑:我知道问题的名称很糟糕,但我不知道要给它什么其他通用名称。如果有人可以帮助我将不胜感激