周末闲来无事,于是整理了一下上个月的资料,结果发现一个“流光剑加密”的文件加密小软件,我个人对带“密”字的东东比较“来电”,于是想看看它是怎么鼓捣出来的。
一、寻找密码
程序提供了两种加密方式,一种是普通的加密,另一种是“高级”加密,运行程序,而且只能加密文件夹。
用Peid查壳,是upx的壳。
upx壳是款众所周知的压缩壳,至于导入表INT是不加密的,直接载入LordPe着其INT。里面有一个Advap132.dll,调用了该库中大量的注册表操作函数,看来有密码有可能和注册表有关系。
设置密码为iwillfucku,然后在“开始”——“运行”中输入regedit打开“注册表编辑器”,CTRL+F搜索“iwillfucku”字符串。
竟然真的能找到,返回程序以证明该sfolder键的确是有该程序所创建,用IDA载入程序,按shift+F12打开字符串窗口(因为个人用的是IDA比较新的版本默认不会打开string窗口),直接在string窗口中,按“sfolder”,定位到字符串,看来程序的密码的确就是保存这里,有了密码,“解密”就是“张飞吃豆芽了”。
二、程序的“加密把戏”
程序的加密方式更是有点“变戏法”的味道,先看第一种普通加密方式,建立一个test文件夹,用程序进行加密,加密后注意文件夹的变化。
文件夹的后面有一个“.”,这不就是使用的畸形目录嘛。
畸形目录是Windows目录的一种缺陷,因为在Windows中“\”符号是路径的分隔符,比如“C:\Windows\”的意思是指C分区中的Windows文件夹,而“C:\Windows\System.exe”的意思是C分区中的Windows文件夹中的System.exe文件。那么如果文件名中有“\”符号会怎么样呢?假如“S\”是一个文件夹的名字,这个文件夹位于“F:\”,它的路径就是“F:\S\”,当我们试图访问时,Windows会错误的认为我们要打开的文件是F分区下的名为“S”的文件夹,而非“S\”文件夹,这样Windows就无法准确打开该文件夹,并且会返回一个错误信息,因为以上路径并不存在。
知道了原理,那么就在Windows XP下简单的创建“S\”文件夹吧。咦?怎么系统会提示“文件名不能包含\符号”,微软早就想到了这点,但是我们却可以通过CMD里的mkdir命令建立这样的文件夹,比如输入mkdir hacker..\,这样就能建立一个hacker.的目录,一个命令的操作竟然弄个程序来忽悠人,这个软件的作者估计比我还闲。
“解密”的方法就简单 了,在“开始”——“运行”,直接输入加密文件路径“F:\逆向大本营\程序实践\sec\test..\”(本机上的方件夹路径),所有的“加密”文件都能查看了。
接下来再看它的“高级加密”方式,勾选程序窗口中的“使用高级加密模式”,再次加密原来的test文件夹,加密后文件夹。
双击加密后的文件夹竟然打开“我的电脑”,运行命令提示符,竟然能进入加密方件夹的目录,执行dir/a,发现一个desktop.ini文件,查看其内容。
只有一个CLSID,CLSID是系统中标识相应对象的一个ID值,双击加密文件夹后打开的是“我的电脑”,打开注册表编辑器(运行中执行regedit.exe),CTRL+F搜索“我的电脑”,对比两个CLSID,竟然是一样的,看来程序所谓的“高级加密模式”是在desktop.ini文件上做手脚。
“解密”的方法就更简单了,直接删除目录下的desktop.ini文件,目录被“解密”出来了。这个程序所谓的“加密”虽然简单,但却是Windows上常用的隐藏文件的技巧,每次隐藏文件如果都手工操作着实比较费力,用这个工具使用上面介绍的两种隐藏方法还是挺“快捷”的。
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。