像ProcessExplorer这样的程序能够读取内存中的字符串(例如,我可以很容易地显示在代码中编写的错误消息,即使它已经编译过).
想象一下,如果我在内存中按顺序分配了密码字符串"123456".如果黑客能够获取用户输入的密码怎么办?反正有没有阻止字符串被清楚地看到?
哦,是的,如果我将密码哈希并从客户端发送到服务器以比较存储的数据库哈希值,黑客是否能够存储相同的哈希值并重播它以获得对用户帐户的访问权限?反正有没有阻止重播?
谢谢!
我有一个游戏,要求我允许玩家通过网络互相聊天.一切都很好,除了玩家可以键入Unicode输入的部分.
所以,这个问题可以分为两部分:
玩家输入时,如何捕获输入?我之前通过游戏输入处理(轮询)完成了这项工作,但是,它不像Windows Forms那样响应.
将输入捕获到字符串后,如何使用TrueType字体输出?我问这个的原因是因为通常,我会在游戏开始时使用游戏中使用的所有文本构建位图字体.但是使用unicode输入,需要将近10k个字符,这在游戏开始时是不可能的.
PS我的目标输入语言更具体针对中文,韩文和日文.
在 C++ 中,我创建了一个名为 Serializer 的类。我想复制 Java 中的功能。以下是序列化器的工作原理。
Serializer s;
s.writeString(myString); // automatically converted to Big-Endian unicode string with length prepended.
s.writeInt(myInt); // automatically converted to Big-Endian integer (swizzled if necessary)
s.writeObject(myObject); // which implements the Serializable interface
{
s.writeInt(myObjectId); // internally, it writes the data that I want to serialize.
...
}
ZlibCompressor.compress(s); // 's' is compressed
{
bytes = s.getBytes(); // internally, it gets bytes, ...
compressFunc(bytes); // compress them
s.overwrite(bytes); // and overwrites
}
AESCipher.encrypt(s); // similarly, 's' …Run Code Online (Sandbox Code Playgroud)