-
-
[求助]调试了8个小时没搞定,求思路
-
发表于:
2010-8-14 20:17
9124
-
今天尝试破解一款国外的软件,搞了一天,很头疼。该软件是用于PDF和word互相转换的一款软件,应该是业界最强的。主要特点是有一个主exe,转换的时候另起进程,是转换用exe,多个dll,后台还有两个服务,一个服务用于转换,一个是用于授权验证。
限制使用的方式:日期限制,限定使用15天,试用期内为全功能版本,PDF无水印标记
特点:
1.假定修改日期是8.15日,把系统时间修改到8.16日,则剩余使用日期剩余14天
2.把系统时间改到9月1日,则剩余使用日期为0,可以继续使用,但转换后的PDF被加上水印标记
3.把时间改为8.19日,剩余天数11天,往回改为8.16日,则显示剩余天数为0,说明改时间无效
4.一旦剩余天数为0之后,无论是改时间,还是卸载重装后,剩余天数都为0
分析过程:
1.用OD和IDA配合,破解了验证标记,进入主exe界面后显示为正式版,而且能实现不弹出剩余天数的对话框,但是进行转换后的PDF有水印,推测是转换exe进行了二次验证
2.通过hook CreateProcess,发现主exe调用转换exe的命令行里,没有源文件,目标文件参数,有一个位于temp目录的tmp文件,notepad打开,发现有路径信息。推测主exe根据用户选择生成了该tmp文件,转换exe通过读取该tmp文件进行转换。转换exe进行二次验证的可能性极大
3.根据经验估计验证信息或者写在文件里,或者在注册表里。用OD断在读取验证信息之前,开启ProcessMonitor,监视主exe,继续读取验证信息,未发现独特的文件和注册表行为,推断主exe并未进行实质性的工作。跟踪读取验证信息的过程,发现是主exe调用filechck.dll,进而和服务通信,推断验证在服务里进行。于是监视该验证服务,发现了有几个特别的注册表写入和文件读取。删除注册表项,重启服务后仍然无效。文件读取是\DEVICE\Harddisk0\DR0,请问大家这个通常是什么?
4.尝试彻底卸载,恢复原始状态。卸载软件,但是发现验证服务没有被卸载,于是手动停止验证服务,卸载,删除注册表项目,删除软件的appdata,安装目录,注册表software,还有服务被监视到的注册表访问位置。重新安装后,使用剩余使用期限仍然是0。很奇怪它到底是如何做到的?
由于OD调试服务很困难,我没有去继续调试服务到底做了啥,查了下该服务的信息。这个服务的exe是nlssrv32.exe,百度了一下:
名称:NLSSRV32.exe
NLSSRV32.exe制造商:Nalpeiron
NLSSRV32.exe描述:Nalpeiron授权服务。后台服务的任务,是Nalpeiron的版权保护软件(软件,使其他软件制造商非法复制,保护他们的产品)的组成部分。
基于以上,请问各位:
1.有对Nalpeiron Licensing技术有所研究的吗?它的原理是什么?
2.读取\DEVICE\Harddisk0\DR0的意义是什么?硬盘序列号?
3.调试服务如何调?
4.自认为卸载十分彻底,把该删的都删了,它的日期信息写在哪里了?重装后仍在
5.对于由命令行启动的带很多参数的进程,OD如何调?attach的时候它已经运行了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!