大约一年前我正在玩游戏。为了加快速度,我编辑了主要的.py文件并在一开始就添加了psyco。游戏跑得越来越快,但它不会让我发送我的分数。我进入了文件,它正在检查自己的md5sum。困惑我的部分是他们在文件中有md5。我的问题是,如何获取文件的md5与文件的总和,包括我还没有的md5。对我来说似乎有一个问题,但他们做到了。
希望我解释得那么好。 例如:
文件:Example.example
check md5 of Example.example
If md5 I just obtained == "###################################"
allow send score.
答案 0 :(得分:5)
你不能(轻松地)在计算MD5的程序中嵌入程序的MD5,因为当你更改你正在嵌入的MD5时,程序的MD5会改变。循环一段时间,最终你可能达到稳定点。然后,你可能不会。 “一段时间”通常意味着2 ^ 128步,所以这将是一段很长的时间 - 就像在太阳变成红巨星之后。
所以有一个技巧。当程序计算自己的MD5时,它会专门识别嵌入式MD5的位置并使用设置值,就像所有NULL一样。
为了让黑客更难,不要使用所有NULL - 使用SALT值。在二进制文件中混淆该值。现在,人们更难编辑嵌入式MD5并在编辑程序后“修复”它。
答案 1 :(得分:1)
在这些情况下通常做的是,在计算MD5时,实际数字会替换为某个占位符,例如空格或零填充。
这被广泛用于像IPSEC这样的加密机制。
答案 2 :(得分:0)
这将是非常困难的,你需要暴力强迫它。你确定它不是一个 红鲱鱼和真正的验证是在其他地方完成的吗?
无论如何看起来似乎不是很好的安全性,是什么阻止你修改这样的算法(使用你的伪代码)
check md5 of Example.example
If md5 I just obtained != "###################################"
allow send score.