阅读:2859回复:11
请教:如何在EXE文件中存储密码信息
向各位高人请教:
我现在要做一个EXE可执行程序,与其它任何动态链接库均无关系,这个程序要求输入密码才能使用。 实现目的: 我要把这个程序分发给用户,而用户要求可以设置自己密码。 我将如何设计该程序呢? 一愁莫展,请各位指教。谢谢! |
|
最新喜欢:popyan...
|
沙发#
发布于:2005-01-28 10:05
EXE和DLL文件都属于只读的,密码放在里面是没有问题的,可是要是想改可能就不行了。
给你个建议,将密码加密后放exe文件之外的地方,最好在注册表里的一个键,使用时先解密再使用,这是比较通用的办法了,毕竟将密码写在一个文件里太不安全。 |
|
|
板凳#
发布于:2005-01-28 10:19
给你一个略为麻烦的办法:
另写一个PassChanger.EXE-用VC或其他工具-将之作为二进制资源放在你的Main.exe里面,当然,你的密码也作为二进制资源存放在Main.exe里面。 这样,至少客户看到的是只有一个EXE。 当客户要修改密码时,Main.exe将PassChanger.exe释放出来,放在本地目录下,并运行之。 PassChanger发出消息,让Main.exe退出,以便可以对之进行修改。 PassChanger此时可以检验旧密码,并让用户输入新密码。旧密码的获取和新密码的写入都要对Main.exe进行操作,而此时Main.exe已经躺在硬盘里任人宰割。。。 之后,PassChanger再次让Main.exe运行,同时,发消息给Main.exe,通知他密码已经更改(是为了让Main.exe知道,应该删除PassChanger.exe!!!)。 这样之后,就只剩下Main.exe还在这里了!当然密码已经被该过了! |
|
|
地板#
发布于:2005-01-28 11:18
非常感谢fslife和zmwk!!
fslife的方法不成,这种方法不安全,也不合乎用户要求. 而zmwk的方法又比较复杂. 不过我从zmwk提示的方法中获取了比较简单的方法,在程序中设置一个字符串类型的资源,用其存储密码.每次使用时均读取该资源,进行密码验证;如果要更改密码,则改写其资源. 当然,为了保证密码不被别人查到,可以使用加密算法或一些小算法,最终确保安全. 经验证,该方法切实可行. |
|
|
地下室#
发布于:2005-01-28 12:36
一个exe不行,得借助其他文件或注册表。
|
|
5楼#
发布于:2005-01-28 18:42
不会吧!
就算你使用UpdateResource API,它也不支持写入正在运行的EXE呀! 你是怎么实现的呢?我很好奇?! |
|
|
6楼#
发布于:2005-01-30 19:40
不好意思,zmwk,是我搞错了.
你说的是对的! |
|
|
7楼#
发布于:2005-03-06 22:31
可以把加密结果直接写在EXE文件里,PE文件前面大概有几十个BYTE是为了输出This program cannot be run in DOS mode,只要你要写入的信息不太长应该可以覆盖。
不然还可以在PE尾部追加数据,缺点是如果软件自效验的话这种方法就不可行了。 |
|
8楼#
发布于:2005-03-06 22:35
哦 忽略了你要求的是运行时刻写入。我的方法不行。
|
|
9楼#
发布于:2005-03-06 23:54
给你一个略为麻烦的办法: 真是好办法!干净利索,痛快!:) 不过如果贪图简便,可以用dingboy的加壳程序,功能非常强大,不仅可以设密码,还可以反跟踪,还可以有注册码,简直是要啥有啥:) |
|
|
10楼#
发布于:2005-03-16 08:45
哈哈,这个问题我来回答你,不需要用二个文件交替运行的,因为在系统默认状态下,你的文件在执行的时候,的确使被锁定的,不能修改数据的,但是直接磁盘读写操作是没有锁定的,你可以打开磁盘的句柄,自己分析文件系统,找到你的执行文件,直接磁盘扇区读写的方法修改你的执行文件中的数据,修改玩后,在执行修改后的程序文件,并且把老的执行文件关闭,
对于没有自己解析过文件系统的人来说,这种方法有难度,相信会者不难,我是做文件系统的; |
|
11楼#
发布于:2005-03-16 09:18
我告诉你,在你的资源文件的图像中使用水印技术,安全性相当高
|
|
|