探索黑客技术攻防,实战研究与安全创新

导航菜单

LeapFTP的轻量级破解

LeapFTP是一款我很喜欢的FTP工具,无论是友好的交互界面,齐全的上传和下载管理功能,还是支持拖拽式等便捷操作,都足以称得上优点多到“罄竹难书”——除了要收费。处于试用状态的LeapFTP有30天试用的时间限制,以及会在启动时,弹出一个很有爱的提示框。

用进度条表示试用状态还是头一次见,其它的布局都和标准的Nag大同小异,这句“Thisdialog does not appear in the registered version”就是很好的身份证明。如果有注册码,或者Key文件,可以点击“EnterCode”按钮根据提示进行注册,这时也是跟注册码的好时机。LeapFTP不能直接输入注册码,而是采用粘贴和导入文件两种方法获取输入,可以考虑断剪切板或者读文件的相关API。追码是体力活,具体过程会有另一篇文章,这次定的题目是轻量级破解,体力活能绕过就尽量绕过罢。

接着观察,轮到修改时间。我把系统时间改到试用期满的那一天,这次没有“Accept”,只能注册了。这时应该同时打开RegMon和FileMon监控,很多试用版的软件在试用结束后,会写入某个键值或者文件作为标记,这样这台机器就算把时间再改回去,也无法继续试用了。但这里,我并没有捕捉到LeapFTP有类似的操作,看来LeapFTP只是单纯的读取时间进行比较。

V]]22O@8RRU`P{VQ)FDFB15.jpg

试验证明了我的推测。把时间改回来后,LeapFTP又可以试用了。点击“Accept”按钮开始试用,除了标题栏显示“Unregistered”,并没有发现功能方面的限制。

这是发现绝对具有里程碑意义。以往我们破解,不是追码就是爆破,总之必须找到判断是否已注册的核心算法的汇编码,找出可能一个也可能有多个的决定性条件跳转,例如LeapFTP中就有多个检查点,一一揪出来还是得花点力气。但,当我们发现试用版只存在时间或者次数上的限制,而没有缺少功能时,就可以考虑本文提出的轻量级破解——全称为无限延长试用时间或者次数的无赖招数。

首先就是去Nag(Nag在破解中常代表非注册的提示框,这篇文章中指代的就是试用的提示框)。去哪找生成Nag的代码呢?没找到CreateWindow,没找到DialogBox,总算找到个靠

谱的CreateWindowEx,可是被调用太多,F9按得好烦。重新观察提示框,“You are on day 1 of 30 day trial period”引起我的好奇。显然,这个“1”肯定是个变量,而这个变量显然与时间有关。好,就从这个1下手,按编程习惯猜一下,这段显示会不会是字符串“You are on diay”和“of 30 day trial period”加上一个显示日期的变量连接而成?试总比不试好,OD搜索字符串,Bingo!找到如下代码:

注意0056341D处的mov eax,esi,其中esi保存的值正是软件使用的时间-1。循着esi的来源顺藤摸瓜,可以追踪到LeapFTP是怎样获取当前系统时间及文件创建的时间,并计算出已使用的天数。

好吧,那些追踪还是太费体力了,注意00563458处有两个条件跳转和一个无条件跳转,而且是由eax,即软件使用时间-1的值,分别减去1FH和OFH去做为判断条件。

一路F8,可以看到在试用期内,程序在第一个条件跳转,也就是00563458处就跳了,很自然就会去想,为什么要分别减去1FH呢?1FH对应的十进制是31,正好比试用的30天多l,而条件跳转又是jb,联系上面的分析,不难推测出这里进行的是试用期是否已满的判断。而修改时间发现,如果使用期满,则会转到0056345F处的jmp跳转,应证了猜想。

这一部分分析完毕。让这几个跳转直接转到返回,Nag对话框就不会出现,这种修改方法,我称之为去Nag的1.0版本。用时没问题了,只是,经过上面分析,这段代码就是获取时间和弹出Nag对话框,并没有任何实质操作,是不是可以直接跳过这段代码呢?

跟踪到这一部分代码的返回,返回到00564ADF。

00564ADA处就是调用弹对话框的函数,一往上不远处有个条件跳转,根据是否已注册进行判断,把jnz修改成jmp,就可以去Nag了。大功告成。不过如果标题栏上那个令人纠结的unregistered也能去掉,那就更完美了。试试吧,还是字符串搜索“unregistered”。

00563989处的jnz,如果是未注册则跳转。Call 00481C60用来设置标题栏。可以看到,如果是未注册,则传入字符串“leapftp 3.1.0 - (unregistered)”作为参数,只要把jnz指令nop掉,标题栏就不带“unregistered”了。

这次的LeapFTP轻量级破解就告一段落了,采取的策略主要是黑盒观察辅以OD的字符串搜索,并没有陷入太多繁杂的代码中去,希望能给大家的破解思路,带来一丝凉风。Suno写于字数大战正酣。

本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。