YXScript.dll(解密VBScript.Encode)组建更新

上次的DLL在各位使用之后出现了一些不足,下面就对这些地方的更新做一个说明:

 

其实失误并不在DLL本身,也就是说,DLL的函数YXScrDecode基本是准确无误的,错就错在给他传递

参数的VB这一块,先看下原来的代码

 

 

最后那里:Len(Script)或者LenB(Script)

导致了解密有有一部分代码不见了,用LenB则多出很多奇怪的字符,经过检查找出是Len函数

的问题,测试如下

 

    'lpstr(0) = "Hello!"             '半角Len = 6;LenB = 12
    'lpstr(1) = "Hello!"            '全角Len = 6;LenB = 12
    'lpstr(2) = "Hello!" & vbCr      '回车Len = 7;LenB = 14
    'lpstr(3) = "Hello!" & vbCrLf    '换行Len = 8;LenB = 16

也就是说Len返回时字符数,LenB返回字节数但是每个字符按2字节算!即Unicode那种。

为了解决这个问题,VB程序员可以用Len和LenB的返回值就算具体的字节数,方法这里就不说了

不然越扯越远,我相信广大程序员都是很聪明的~

 

YXScript.DLL这次更新 提供了一个函数高效率的处理这个问题,函数YXHowManyBytes

只需要提供一个参数 lpString 返回该参数的字节数(Long)

经过处理后的代码:

 

这里提供一个新的函数,YXScrDecoder --多一个r,少一个参数szCount,也就是不必传递字符串的长度

但是lpResult起码有YXHowManyBytes(lpString)长度,否则可能导致内存访问错误 

 

 

解密CR+LF的时候得到CR 和 0x02 我还不知道是什么原因使C语言字符数组的第-1个元素是0x02,

这次也同时把这个地方解决了,即解码的时候只处理0x09以上的字符,

同时发现在某些计算机上,n会显示为-,正在查原因

下图为解码某个脚本后的效果

 

更新后的源代码可以在我的下载里找到,不需要分分:

http://download.csdn.net/prsniper

 

感谢为这次更新提供宝贵意见的朋友,也再次证明,用户的反馈是最有实际意义的!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值