如何解决通过反转简单的“散列”函数查找原像
我正在对一个程序进行逆向工程,该程序做了一堆无意义的事情,我设法想出了这个:
#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 举报,一经查实,本站将立刻删除。