如何在C++中检查函数的CRC

How to check the CRC of the function in C++

是否可以在运行时间内统计函数内存中代码的CRC校验?

我有一个比较用户密码和秘密密码的功能。如果我检查 函数中所有命令的 CRC ,我将能够理解函数的代码是否在反汇编程序中被覆盖了。

目前,我已经尝试使用 Boost::crc,但我不确定如何将函数传递给 crc_32_type 对象。

这是行不通的(至少,returns 每次我 运行 程序都会有一个新的结果):

void myFunction() {...};

auto GetCrc32() -> decltype(boost::crc_32_type().checksum()){
    std::function<void()> func = myFunction;

    boost::crc_32_type result;
    result.process_bytes(&func, sizeof(func));
    return result.checksum();
}

不,在执行期间没有可移植的方法来查找或访问已编译的函数代码。

如果代码可以被恶意修改,那么检查代码的代码也可以被恶意修改以不检测更改,使练习完全没有意义。

最后,CRC 很容易被欺骗,因此可以很容易地修改代码,使 CRC 保持不变。

None 您尝试做的事情很有意义。