- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
来自 man page of memfrob
:
void *memfrob(void *s, size_t n);
The memfrob() function encrypts the first n bytes of the memory area s by exclusive-ORing each character with the number 42. The effect can be reversed by using memfrob() on the encrypted memory area.
Note that this function is not a proper encryption routine as the XOR constant is fixed, and is only suitable for hiding strings.
我对 memfrob
函数有以下疑问:
memfrob
的设计者没有将常数的选择权留给用户,有什么原因吗?最佳答案
memfrob()
的目的(如果你想称其为目的)是隐藏字符串,以便在运行 strings
时看不到它们。当您的二进制文件包含明文密码并且您想阻止爱管闲事的人找出这些密码是什么时,这可能很有用。当然,破解 XOR-by-42 并不难,但总比没有好。
XOR 的数字可以是任意的,但它需要在 glibc 的后续版本中保持不变,因此依赖于数字 42 的代码不会中断。
有些人认为 memfrob()
是一个笑话函数,但我不确定是否真的如此。尽管如此,您不应该使用它,因为它不是标准功能(因此在非 glibc 平台上不可用),而且混淆不能替代适当的安全性。
它的笑话是it is the meaning of Life .类似于 rot-13因为它是最简单的加密,再次运行它会恢复字符串。 Rot-13 不会对纯文本中的空格做任何事情,而 memfrob 有交换空格和换行的奇怪结果:
space = 100000 (32), 42 = 101010, 32^42 = 001010 (10 = LF, and 10^42 back to 32)
虽然这些混淆了它们,但它们的加密效果很差,因为它们可以通过查看结果来识别:很多 r 和 n,那么它就是 rot13;很多 CR,\和 ^ 然后是 memfrob。
关于c - memfrob函数的设计与使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207768/
我是一名优秀的程序员,十分优秀!