1、程序改用C++ 对象编译编写 2、可编译静态库(静态库版本另行付费) 3、已经过两个多月的测试,基本稳定(可能还会有少许BUG) 4、要使用此版本,服务端必须升级到 M13-P210或以上版本
1、经部份用户反馈,反复调试修复一处可能造成内存错误的BUG
1、服务端M133-P2**的才支持X1.2版本客户端 2、优化取网卡、硬盘号、CPUID算法 3、取机器码方式命令参数变动,原参数兼容 ks_cmd("set","<pccodemode>CMD三个字母的任意组合</pccodemode>") 定义取哪些机器码使用哪个物理硬件(如果你定义了ks_cmd("set","<pccode>你自己通过自己的代码取到的机器码</pccode>"),那么此命令无效) 不调用set pccodemode就是:默认为有网卡取网卡,取网卡出错取硬盘系列号,硬盘系列号出错取CPUID。 自定义取法,可设置值CDM三个字母组合 'C' 只取CPU 'D' 只取磁盘 'M' 只取网卡 还可以有以下四种组合,字母并不一定要按顺序拼写 'DC' :磁盘和CPU 'DM' :磁盘和网卡 'CM' :CPU和网卡 'MDC':网卡和磁盘和CPU X1.0 X1.1的值0、1、2、3为老版本兼容保留,不建议使用 4、新增两种http连接方式,原来用的是【1】winhttp,新增【2】wininet和【3】XMLHTTPRequest 某些用户操作系统问题导致默认连方式连不上,或许换种http连接方式可以连接上验证 修改连接模式方法,比如我要换成XMLHTTPRequest的方式连接服务端 A、通过命令 ks_cmd("set","<httpmode>3</httpmode>") B、或通过修改ini文件 [config] httpmode = 3 默认为1,1是winhttp、 2是wininet、 3是XMLHTTPRequest 如果你A、B两种方式都用了,A方式设置的参数拥有优先级 注意:如果你用https的话,只能用winhttp和wininet这两种方式 5、针对极少数电脑连接服务端时提示 fuction.iconv错误,优化内部编码和服务端相关 6、原来32位DLL是delphi7的工程,64位DLL是delphi XE2版本工程,现统一改为delphi XE2工程 并对程代码逻辑进行了大量优化 7、IPC进程通讯优化,由于不知名的原因,IPC客户端偶尔会出PostThreadMessage通知服务端线程失败 现将通知改为共享内存处理消息,并对IPC通讯机制优化,经长时间多进程和多线程测试,非常稳定。 进程通讯模式的话,1.2.9的softxlic.dll,子进程也就是客户端需配合1.2.9的ipc.dll或 ipcv1.2.ec模块使用
优化部分机器不能启动软件的BUG 修复用户未到期提示到期的BUG 内部代码部份优化
修复HTTP.stats状态不在逻辑范围内,没有自动重连的BUG 修复异常一次后,紧跟着调用advapi提示136登陆时禁止传入调用advapi的BUG HTTP对像名获取成功后缓存,不再每次都重新判断 ks_cmd("get","") 命令获取的数据新增了一个dllver单元,获取DLL版本号的 优化abort 优化CoInitialize 和 CoUnInitialize 逻辑
1、修改 state号131的message 原 <state>131</state><message>Http.Status不在程序逻辑范围内的。HTTP.Status:</message> 新 <state>131</state><message>不能连接到服务器,请重试。HTTP.Status:</message> 2、修改默认首选Http对像版本为 MSXML2.XMLHTTP.3.0 原版本取msxml对像顺序为 MSXML2.XMLHTTP.6.0 MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP 新版本取msxml对像顺序为 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP.6.0 MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP Microsoft.XMLHTTP 3、修复无卡注册时因为未传递机器码产生的BUG,服务端也需升级到M13-P182
全新内核和结构,所以不再引用老版本的版本号,新版本号以X开头命名 可更灵活的根据返回数据来效验和保护软件数据 如何加密解密你自己说的算 详见SDK说明
如果你要使用V9.5版本的客户端就必须服务端升级到M08-P125或更高的版本 通讯算法修改 易语言模块,采用内存加载DLL的方式把DLL打包成模块,命令接口不变 COM组件接口名变更为 ksreg.ver905 用TC和COM组件的朋友请注意了
如果你要使用V9.4版本的客户端就必须服务端升级到M06-P118或更高的版本 配合M06-P118及以上服务端,更好的起到防山寨作用 程序代码优化,执行速度更快 COM组件接口名变更为 ksreg.ver904 用TC和COM组件的朋友请注意了
优化内存数据处理速度 增加可调节防DDOS接口
使用V9.3.12版本的必须更新到V9.3.13 其它版本不受影响
1、避免很多人产生困惑,特移除接口客户端 encode_RC4Base64 与 encode_rsa 2、9.3版本开始,服务器必须支持Zend Optimizer 3.3.* 或 Zend Guard Loader 3、9.3版本必须与M04-P080+(包函M04-P080) 的服务端版本使用
1、修正V9.2.10启动慢的BUG
1、优化内存 2、新增两组加解密接口 RC4加密:encode_RC4Base64(RC4密钥,待加密文本) RC4解密:decode_RC4Base64(RC4密钥,加密文本) RSA加密:encode_rsa(待加密文本, RSA公钥,RSA模数) RSA解密:decode_rsa(加密文本, RSA公钥,RSA模数) 关于RSA的公钥、私钥、模数如何生成,请参见http://www.hphu.com/news.php?id=2 只建议使用服务端加密->客户端解密的流程, 也就是说 客户端的RC4加密encode_RC4Base64和RSA加密encode_rsa基本上可以不用 如果你只是想做客户端本地数据相互加解密的话则可以。 服务端advapi区可用 make_key() 来生成一个20位的随机字符串[A..Z,a..z,0..9] 注意: 1、RSA加密的文本不能超过20个字符,如果数据量大,建议用RC4加密,RSA用于加密传送RC4的密钥 2、因为编码问题,RSA和RC4目前只能加密半角字符串也就是英文字符、英文符号、英文标点 3、RSA不管加密还是解密,服务端用私钥,客户端用公钥 4、只建议使用服务端加密->客户端解密的流程,客户端加密->服务端解密流程不建议使用 RSA算法: 服务端加密->客户端解密 服务端:加密文本A=encode_rsa(待加密文本, RSA私钥,RSA模数) 客户端:解密数据=decode_rsa(加密文本A, RSA公钥,RSA模数) RC4算法: 服务端加密->客户端解密 服务端:加密文本A=encode_RC4Base64(RC4密钥,待加密文本) 客户端:解密数据=decode_RC4Base64(RC4密钥,加密文本A) 使用RSA加密长度大于20位的字符串的方式 方式1: 分多个advapi,每个advapi最多只返回20个字符的字符串 方式2: 动态生成不大于20位的RC4密钥,用RSA加密RC4密钥,然后采用RC4加密 服务端: $RC4Key_A=make_key(); //生成随机RC4 密钥 function v_getRC4Key_A(){ global $RC4KeyA; return encode_rsa($RC4Key_A, 'RSA私钥','RSA模数'); } function v_getRC4Data_A(){ global $RC4KeyA; return encode_RC4Base64($RC4Key_A,'待返回数据'); } 客户端解密: RC4密钥=decode_rsa(advapi("v_getRC4KeyA"),"公钥","模数") RC4解密的数据=decode_RC4Base64(RC4密钥,advapi("v_getRC4Data_A")) 写成一行就是 解密的数据=decode_RC4Base64(decode_rsa(advapi("v_getRC4Key_A"),"公钥","模数"),advapi("v_getRC4Data_A"))
优化IPC进程通讯内核 解决在某些程序入DLL时不能连接登陆器的BUG
修复备服不能取公告的BUG
客户端V9.1.5优化IPC通讯更稳定
修复rsa可能潜在的BUG
1、易模块所有用户使用相同版本的模块,统一用ks_setLicense传入授权信息 2、与服务器之间的通讯新增RSA签名效验功能,增强系统安全 3、改进IPC进程通讯模式,采用sock实现 删除3个接口 IPC_init、IPC_Answer、IPC_free 新增2个接口 启动服务端 IPC_Start(服务端口号,允许连接的客户端数) 成功返回1 失败返回0 客户端连接服务端 IPC_Connect(服务端口号) 成功返回1 失败返回0 服务端口号:需和IPC_Start的服务端口号一样 连接成功后就可以像老版本一样 使用IPC_advapi IPC_advapifree IPC_GetData IPC_IdCheck 这四个进程通讯接口 4、修正因调用ks_IdCheck间隔太短操成接收的数据md5效验失败的BUG 5、修正公用帐号每次登陆显示的剩余时间都不变的BUG
新增错误号提示:eno148 -> 绑定信息不符 ks_GetData(20),自动解绑扣除的时间(单位天)
全新代码,非版本更新
标准接口函数
ks_setLicense :设置KSS系统的使用授权码【LicenseKey】
ks_setExtVal :设置KSS的微调参数,必须在登陆器窗体载入时调用一次
ks_setSoftVal :设置软件编号参数与软件密钥参数,本接口只可调用一次
ks_setUpVal :设置自动更新相关参数
ks_setUserVal :设置用户身份信息:通道号、帐号或注册卡号、密码、绑定信息。
ks_GetMsg :返回本验证系统错误码的错误信息
ks_IdCheck :基础验证功能,验证用户或注册卡是否有效
ks_GetData :获取服务端上的相关数据
ks_advapi :安全核心功能,发送字符串参数,送交服务器运算,服务端运算后返回字符串
ks_advapifree :释放ks_advapi的缓存,以便下次调用相同参数的ks_advapi时,保证返回的数据是从服务端重新获取的
ks_prepaid :给用户充值的接口
ks_reguser :客户注册会员帐号的接口
ks_unbind :机器码解除绑定关系的接口
ks_viewinfo :查询会员或注册卡号信息的接口
ks_edit :会员自助修改密码、绑定信息的接口
ks_exit :程序关闭时(IPC进程通讯模式下的子进程关闭时除外),一定要调用本接口
进程通讯接口函数
IPC_Init :父进程和子进程初始化并建立连接关系
IPC_Answer :应答子进程的通讯请求
IPC_IdCheck :基础验证功能,验证用户或注册卡是否有效
IPC_GetData :获取服务端上的相关数据
IPC_advapi :安全核心功能,发送字符串参数,送交服务器运算,服务端运算后返回字符串
IPC_advapifree :释放IPC_advapi的缓存,以便下次调用相同参数的IPC_advapi时,保证返回的数据是从服务端重新获取的
IPC_free :放子进程占用的通讯资源,在子进程关闭时必须调用
动态库包函以上所有23个接口函数
按键插件只有16个接口函数,无进程通讯(IPC_***)接口函数
易模块22个接口函数,无ks_setLicense接口函数