又是
2004-08-12, 07:44 PM
今天有个领导找到我们科里的小鬼,让他帮忙找个文件加密的软件,小鬼没什么经验而且非常热心,于是就给他到网上下载了个叫做“金锁”的国产文件夹加密软件,并且帮领导安装了。然后领导把所有的需要保密的资料都打包放入了一个文件夹然后加了密码。
谁知道没多久,领导说后来自己重新输入了密码,然后怎么也开不了锁,这下糟了,因为那些资料是非常重要的。然后小鬼告诉我了这个事情,我当时觉得这个应该比较容易解决,因为很多windows下的保护软件都是通过创建特殊的不可见的目录然后利用自己的程序来还原从而达到加密的目的。于是我告诉小鬼今后不要轻易使用国产软件之后:p ,让他首先进入安全模式试试看,不行的话就把硬盘下到别的机器上读读看,没想到在没有加载保护的情况下,文件夹显示为一个0字节的.enf文件。没办法,只好下载了这个烂国产软件装到自己机器上,想研究研究究竟是什么保护机制。
这个软件做的实在是烂,因为密码输入是一次生效,不需要确认,这就意味着使用者如果不小心输错了密码,就只好干瞪眼了。于是让领导重复尝试跟他记住的密码相似的字符,很倒霉,没有任何结果,始终提示密码错误。
没办法,只好动手用windasm反汇编,打算把主程序文件读取密码校验的地方破解掉。程序是用delphi写的,里面提示密码错误的字串有十几个地方,看样子静态的分析会很费工夫,于是又拿出了softice,花了很长时间跟踪断点,最后修改的结果是提示密码错误的对话框不再出现,然而不能激活目录。这时候我知道离成功已经不远了,肯定是有一个返回的变量值不正确。只要利用一个已知密码的新文件夹来进行比对,肯定能得出结果。
这时候我突然想起了winhex,因为程序是用delphi写的,那么如果它取出密码进行校验的时候用的是明码,很可能利用winhex就能直接读取到密码!
不出所料,这个烂程序在取出加密密码和输入的密码进行运算的时候,没有对字符串进行加密,我在我的机器上很容易地读出了自己原先设定的文件夹密码。
于是我把winhex拷贝到了领导的机器上,运行winhex-〉激活程序-〉任意输入密码-〉在winhex里查找字串―〉往下走...
原以为我可以看到密码,结果...在我记下的偏移量地址,居然没有任何可见字符!!
我傻眼了。
难道这个软件在win98下运算机制跟win2000不同?可是当我尝试加密了一个新文件夹,再用winhex来读取的时候,却很容易地读出了密码!!
这时候我脑子里灵光一闪,没有任何字符,那就说明,领导根本没有输入字符!!他输入的是一个回车!!
接下来的操作完全证实了我的想法,在提示输入密码的时候,只要回车,就OK了!!
天哪,我们这么多人试了这么多个密码,就没有一个人想到:密码就是一个回车!!
这就是盲点。我们都没有想到有人居然压根没有输入密码却记得自己确实输入了什么密码。
谁知道没多久,领导说后来自己重新输入了密码,然后怎么也开不了锁,这下糟了,因为那些资料是非常重要的。然后小鬼告诉我了这个事情,我当时觉得这个应该比较容易解决,因为很多windows下的保护软件都是通过创建特殊的不可见的目录然后利用自己的程序来还原从而达到加密的目的。于是我告诉小鬼今后不要轻易使用国产软件之后:p ,让他首先进入安全模式试试看,不行的话就把硬盘下到别的机器上读读看,没想到在没有加载保护的情况下,文件夹显示为一个0字节的.enf文件。没办法,只好下载了这个烂国产软件装到自己机器上,想研究研究究竟是什么保护机制。
这个软件做的实在是烂,因为密码输入是一次生效,不需要确认,这就意味着使用者如果不小心输错了密码,就只好干瞪眼了。于是让领导重复尝试跟他记住的密码相似的字符,很倒霉,没有任何结果,始终提示密码错误。
没办法,只好动手用windasm反汇编,打算把主程序文件读取密码校验的地方破解掉。程序是用delphi写的,里面提示密码错误的字串有十几个地方,看样子静态的分析会很费工夫,于是又拿出了softice,花了很长时间跟踪断点,最后修改的结果是提示密码错误的对话框不再出现,然而不能激活目录。这时候我知道离成功已经不远了,肯定是有一个返回的变量值不正确。只要利用一个已知密码的新文件夹来进行比对,肯定能得出结果。
这时候我突然想起了winhex,因为程序是用delphi写的,那么如果它取出密码进行校验的时候用的是明码,很可能利用winhex就能直接读取到密码!
不出所料,这个烂程序在取出加密密码和输入的密码进行运算的时候,没有对字符串进行加密,我在我的机器上很容易地读出了自己原先设定的文件夹密码。
于是我把winhex拷贝到了领导的机器上,运行winhex-〉激活程序-〉任意输入密码-〉在winhex里查找字串―〉往下走...
原以为我可以看到密码,结果...在我记下的偏移量地址,居然没有任何可见字符!!
我傻眼了。
难道这个软件在win98下运算机制跟win2000不同?可是当我尝试加密了一个新文件夹,再用winhex来读取的时候,却很容易地读出了密码!!
这时候我脑子里灵光一闪,没有任何字符,那就说明,领导根本没有输入字符!!他输入的是一个回车!!
接下来的操作完全证实了我的想法,在提示输入密码的时候,只要回车,就OK了!!
天哪,我们这么多人试了这么多个密码,就没有一个人想到:密码就是一个回车!!
这就是盲点。我们都没有想到有人居然压根没有输入密码却记得自己确实输入了什么密码。