记一次进销存软件的破解

该进销存软件,为10年前发布的,发布者给用户的license,里面的过期时间是2022年1月1日过期,登录进入系统之后,就会弹窗,提示即将过期(在2022年1月1日前,客户就反馈过来,存在即将过期的问题),点击确认或取消按钮,程序就会退出。

首先,安装该软件,该软件对应的有数据库文件,是MS SQL Server数据库 ,安装的版本是SQL Server 2000,还需要安装SP4的补丁程序(后面发现该补丁程序不安装,根本连不上,坑)

根据客户提供的数据库备份文件,恢复数据库,在数据库中可以看到,有保存license信息

深入分析该软件,发现该软件是PowerBuilder9编写的,安装目录中有几个dll文件,还有PowerBuilder的虚拟机dll文件——pbvm90.dll文件。

 网上搜索PowerBuilder的pbd文件的反编译工具,其中 Shudepb PB反编译专家 收费,不付费长段的代码只能看到前面几行的。PB DeCompiler.exe也不行,同样的有限制。最终找到个比较好用的无限制的——PBKiller.exe。

PowerBuilder的pbd文件,是PowerBuilder特有格式的文件,所以必须用反编译pbd文件的专用软件才能打开,打开后发现里面也有一些是PowerBuilder的pascal语言的文本格式的代码。若在pbd文件中有license解析校验的,那么PBKiller.exe不能更改保存pbd文件,只能查看,可以用二进制编辑软件,打开,找到对应的字符文件的二进制存储位置,修改即可。

最终发现,修改pbd文件的方法行不通,至少主界面登录完成,提示过期的弹窗,不是在这些pbd文件中。使用olldbg打断点(ShowWindow上),发现是调用的htsoft模块,安装目录下就有htsoft.dll这个文件。

并且,从pbd文件中的代码中看到,通过修改系统时间,绕过过期时间的检查,不太可行。因为代码会校验单据流水号的生成的最新时间,若系统登录的时间,比流水号生成的时间早,则直接报异常退出。虽然也可以更改数据库的流水号生成时间,但是改了系统时间,会造成录入的单据时间都是错的,这样也让这个系统,业务侧没法使用。

我自己本地分析,是通过更改了系统时间,到2009年1月1日之前,暂时可实现程序登录后不退出。

 通过比较长的时间,一个个查看了这些pbd文件,还好这些文件可以看到是跟进销存系统的前端模块,进行划分的。里面找到了用户自行在软件界面,输入license进行校验,并保存到数据库的代码。

最终分析,用户输入license注册,进行license校验时,调用的是htinit.dll这个文件。

把htinit.dll这个文件,拖进IDA,发现这个dll只有一个GetLicenseDate函数,从函数名称可以看出,这个是校验读取license中,还剩余多长时间过期的。

从用户机器上拿到的license,在我自己的机器上安装之后,数据库中由于已经保存了注册好的license信息,所以我本地不再需要操作注册。但是,本地的过期时间,提示是2009年1月1日过期,而不是2022年1月1日过期,所以猜测,该license中,应该还有机器名或者硬件码相关的信息,是针对特定机器的注册码,虽然用户名是ts.cxgxds,但是还需要绑定机器。

上图为软件的用户注册页面 

 上图为注册界面,点击时间之后,连接服务器操作的代码。

上图为注册时,调用htinit.dll的GetLicenseDate函数,获取剩余过期天数的代码。

上图可以看到,htinit.dll只有 GetLicenseDate这一个导出函数。

用于htinit.dll只有 GetLicenseDate这一个函数,并且传入的参数,反编译后能推测出来,所以我自己用VC6.0写了一个,替换,直接返回一个较大的剩余过期天数,并且还实现了将传入的参数,保存到文本文件。后发现传入的参数是用户ID和可能经过处理的license,因为都是整数,记录下来的传入参数是变的,并且看不出来什么有用信息。

 上图:拦截htinit.dll的GetLicenseDate方法,保存其传入参数

分析了GetLicenseDate的代码,发现这里面就包含了license的解密的算法相关的代码,但是具体的算法本人水平有限,并不能分析出来,网上也没找到相关资源。大致推测是des加密解密算法,不是非对称加密。

所以这一条路暂且放下了,因为这里仅仅是注册时license的校验。要最终达到破解的效果,让软件可用,去除那个主界面的过期提示,才能根本。

通过比较长时间的olldbg调试分析,发现过期的弹窗的提示,其代码在htsoft.dll文件中,并且在htsoft.dll文件中,看到了与htinit.dll的GetLicenseDate方法中,非常相似的license解密代码。到这里,离破解完成就不远了。

 上图:找到了,对于license的过期判断,是否进行弹窗的关键逻辑判断位置,这个位置关键且唯一,那么改了这个地方,就能实现不再弹窗过期提示,也就达到了破解的效果。至于该软件的其余操作位置,是否也还有执行license校验的,目前经过全面的代码分析,应该是没有了,那么先改了这个

 上图:即把jnz short loc 10004286 改为jz hort loc 10004286

75是jnz指令的机器码,74是jn指令的机器码,用二进制编辑软件HexFrame把这里修改,另存未一份新的htsoft.dll替换原来的,进入系统。发现已没有过期的弹窗提示,进行一些模块的操作,也是正常的,将软件一直开着,也没出现过期的弹窗提示了。

软件:IDA、olldbg、pbkiller、HexFrame

遗憾:由于水平有限,对加解密算法的逆向没多少经验,并没有逆向出license的加密解密算法,得到license的生成算法。

教训:在自己的软件开发过程中,license的校验,不要弄唯一点,这样容易修改。

(78条消息) 记一次进销存软件的破解(补充)_liuyouzhang89的专栏-CSDN博客icon-default.png?t=M0H8https://blog.csdn.net/liuyouzhang89/article/details/122914925

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件大小:6.1MB 软件类别:国产软件 / 其它行业 软件授权:破解软件语言:简体中文 更新时间: 2011-12-14 《速用进销存软件》是国内唯一图形化的进销存财务软件,以点击录入式的操作,图形化的导航式界面,快速完成日常贸易管理中的进货、出货、存货等操作,并结合准确、高效的财务统计和业务分析功能,通过交互式的数据中心与一目了然的统计报表,使企业决策者最关心的进销存往来款项、销售状况、库存数量等能够即点即现。   从软件的模块功能进行划分,速用进销存软件主要分为货品销售管理,材料采购管理,仓库库存管理,财务收支管理,软件权限管理等几大部分:   一、销售管理   销售管理是速用进销存软件的核心管理功能,销售管理以客户管理为对象,通过客户的进销存应收款项,已收款项,客户欠款等数据简单直接地反映企业销售状况,具有销售单据管理,货品单据管理,应收应付帐簿,财务收支录等管理功能,可录客户的历史货品成交价格,能通过点击式操作快速开单,自动弹出货品价格,能打印各类进销存单据,进销存票据。   二、采购管理   采购管理是速用进销存软件的重要管理功能,采购管理以供应商管理为主,从供应商的货品采购,货款支付,财务收支等方面反映企业的采购状况,具有采购单据管理,货品入仓管理,应收应付帐簿,财务收支录等管理功能,能统计进货成本,存货数量,能打印各类进销存进货单据,通过速用进销存软件点击式采购开单操作,软件会自动为用户生成货品信息和进货价格。   三、仓库管理   即点即现的仓库管理技术,实时的仓库管理界面,可以随时查看仓库各类货品的库存状况,能够分别管理货品进货、出货价格,统计货品的采购成本与销售利润,速用进销存软件的货品库存能够实现完全自动化管理,各类货品的库存都随着采购开单与销售开单实时生成,无需手工录入,并能够进行库存自动报警设置,可为不同的进销存货品设置不同的库存报警数量。   四、财务管理   速用进销存的货品进销存管理与企业财务管理紧密结合,实现真正的进、销、存、财一体化管理效果,清晰准确地录每一笔财务上的收支,通过多样化的图表,直观生动地反映企业的财务管理数据,并可以形成生动的财务图形化分析图,让企业的财务状况跃然纸上   五、权限管理   速用进销存软件分为多种不同的管理角色,灵活地控制不同管理角色的管理权限,分别使用进销存各部分的管理功能,例如销售人员只要负责进销存中的出货管理,客户管理;采购人员主要负责进货管理,仓库管理,库存盘点;而管理员则负责软件数据库的备份与恢复;另外速用软件建议用户,最好能够养成定期进行软件数据库备份的好习惯,未雨绸缪,确保数据万无一失
创新进销存管理系统破解版是一款专业的进销存管理软件,这款软件专为中小企业以及贸易管理企业精心打造,为用户提供产品管理、客户管理、月结单管理、数据分析、图表分析等功能。(本软件已经完美破解,无任何时间功能限制。)  创新进销存管理系统是2019年最新实用、功能强大的进销存管理软件,它能够为用户提供采购订单、入库单、采购退货、报价单等实用功能。此款软件非常适合中小以及贸易管理企业,操作简单、绿色实用,需要的话可以来下载使用。 【软件特点】   1、支持单仓库/多仓库管理,可以管理任意仓库、任意品种的库存;   2、可为商品类别、客户分类、供应商分类,类别无限分级;   3、单价、成本价可以设置员工禁止查看;   4、客户联系方式可以设置员工禁止查看;   5、采购入仓可以直接引入采购订单内容,无需重复输入,引入后自动显示交货数量;   6、采购退货可以直接引入采购入仓内容,无需重复输入;   7、自动生成产品进货统计表、供应商供货统计表、订单统计表等;   8、送货单可引入报价单或销售订单,无需重复输入,引入后自动显示交货数量;   9、销售时可以设置产品最低价,最高低,低于最低价时禁止开单;   10、销售时可以适时掌握商品的当前库存数、销售成本等信息;   11、自动生成对账单、年度汇总及各种销售统计表;   12、仓库产品移库、产品盘点功能;   13、银行现金账户调拨功能;   14、自动生成往来单位(供货商,客户)的应收帐款、应付帐款;   15、多种格式可以选择打印,支持小票打印机,支持小票打印,支持产品标签打印;   16、可批量导入导出产品excel资料,客户excel资料,供应商excel资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值