问题描述
我正在对一个程序进行逆向工程,该程序做了一堆无意义的事情,我设法想出了这个:
#define INITIALISATION_SIZE 0x12800
unsigned int compute_hash(char *str,unsigned char initialisation[],unsigned int lookuptable[256]) {
int len = strlen(str);
unsigned int digest = 0;
int i = 0;
do
{
unsigned char index = initialisation[i] ^ str[i % len];
digest = lookuptable[(unsigned char)digest ^ index] ^ (digest >> 8);
++i;
}
while ( i < INITIALISATION_SIZE );
return digest;
}
我试图找到一个字符串,当传递给这个函数时,将返回值 0x331252C3。
有没有比简单地暴力破解更快的方法? (这是我目前正在做的,还没有发现碰撞)
初始化数组和“查找表”是静态的,不会改变。
“查找表”原始字节:https://pastebin.com/raw/5RBx5FRU
初始化原始字节:https://pastebin.com/raw/HMiTg0XG
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)