今天我们来看看如何把服务端的信息写入到要生成的客户端文件中。也许我这样说,你还不明白。先来看看这个图:
分为两个模块:
1.服务端文件
2.客户端登录和客户端主界面
流程分析:
在服务端,填入密码,然后点击生成,就会生成一个客户端文件。再打开客户端文件的时候,需要填入密码,这个密码就是我们在客户端输入的那个密码。输入正确会进入主界面,否则将提示密码错误。
先来我们如何把服务端的密码写入到客户端的中,而且要在指定的位置。
我在做客户端文件的时候,先把密码规定死,设置20个x
string pwd="xxxxxxxxxxxxxxxxxxxx";
然后我用工具找到这20个x在什么地方。
注意:查找类型是Unicode的字符串
位置找到了,是15FEA,我们可以把我们要写的数据写到这个位置,这有20位,可是如果别人密码只填6位怎么办,剩下14位怎么办。没关系,我可以用0x00填充。
来看看服务端的核心代码
注释已经写好了,应该可以看懂吧。
下来看看客户端是如何接收这些数据的。
按理来说,服务端都写好了,我们只需要把输入的密码与pwd比较就可以了。但是做了好几次都失败了,明明打印出来的都一样,可就是提示密码错误。
找找原因。我打印了下pwd的length,发现还是20位,也就是说,我们虽然把剩下的x替换成了0x00,但是位置还在哪里占这呢。所以两个字符创根本不相等。
既然问题知道了,解决的方法也就很多了。我是先定义了一个变量(来存储生成的密码长度),把输入的密码转换成Unicode类型。然后在里面找,如果不等于0x00,就个这个变量加1。这样就可以计算出生成的密码长度,然后截取pwd字符段就OK了。来看看客户端核心代码:
这样,就可以做到我们想要的效果了。这东西在VB等,看来是很难的东西,而在C#中,只需要会用几个简单类,就可以完成。哈哈!~ |