假设我有一个这样的函数(完全随机,我只是在 30 秒内写了一个例子)
bool exampleAuthetnication(char *a, char *b)
{
bool didAuthenticate = false;
if(strcmp(a, b) == 0)
{
didAuthenticate = true;
}
if(didAuthenticate)
{
return true;
}
else
{
stopExecutable();
return false;
}
}
我将如何阅读该函数的前几个字节?
我想出了这个
int functionByteArray[10];
for (int i = 0; i < 10; i++)
{
functionByteArray[i] = *(int*)(((int)&exampleAuthetnication) + (0x04 * i));
}
其背后的逻辑是我们获取函数的内存地址(在这种情况下exampleAuthetnication()
),然后我们转换为 int 指针,然后取消引用以获取我们尝试读取的当前字节行的值,然后存储functionByteArray
,但它没有似乎工作正常。我究竟做错了什么?我想要完成的事情可能吗?