想象一下,您正在对软件进行逆向工程。该软件使用了一个经过混淆和加密的库。该库包含一个函数,让我们调用它secret_function
。这个函数是一个纯函数(即它没有任何副作用,当使用相同的参数调用时,它总是返回相同的输出)。
假设我可以用secret_function
我想要的任何参数调用我想要的次数,但我无法查看实现,是否可以用另一种语言(例如 python)构建等效函数,只分析输入和输出值?
这是一个示例实现secret_function
:
int secret_function(int a, int b) {
if (a == 234) {
return b*2 - a;
}
return a*b;
}
我想到的一种存档方法是使用每个可能的参数调用该函数(在示例中为 2^32 * 2^32,假设为 32 位整数)并存储所有这些,以根据参数返回它们,就像一个巨大的查找表。但这似乎不是很有效,如果可能的话。
更新:您可以假设该函数使用固定大小的参数。所以没有字符串或可变长度数组。