常用ASP代码加密工具的工作原理

 打开ASP文件,经常看到类似这样的代码,创建一个组件,然后传入一大堆没有意义的字符,如下:
<%
Dim obj
Set obj = Server.CreateObject("AspDeCode.DeCode")
obj.AddCode "PCUNCm9wdGlvbiBleHBsaWNpdA0KQ29uc3QgSkVUXzNYID0gNA0KaWYgIiImUmVxdWVzdC5Gb3JtKCJzZXNzaW9uaWQiKSYiIjw+"
obj.AddCode "IiImc2Vzc2lvbi5zZXNzaW9uaWQmIiIgdGhlbiBBbGVydCgi0KfR6cLrtO3O8yIpDQoNCkRpbSBkYnBhdGgsYm9vbElzOTcNCmRi"
obj.AddCode "PiINCglFbmQgSWYNCkVuZCBGdW5jdGlvbg0KDQpTdWIgQWxlcnQoTWVzc2FnZSkNCiU+DQo8c2NyaXB0IGxhbmd1YWdlPSdKYXZh"
obj.AddCode "U2NyaXB0JyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmFsZXJ0KCc8JT1NZXNzYWdlJT4nKTtoaXN0b3J5LmJhY2soKTs8L3Njcmlw"
obj.AddCode "dD48c2NyaXB0IGxhbmd1YWdlPSdKYXZhU2NyaXB0JyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPndpbmRvdy5jbG9zZSgpOzwvc2Ny"
obj.AddCode "aXB0Pg0KPCUNCglyZXNwb25zZS5lbmQNCkVuZCBTdWINCiU+DQo="
obj.RunCode
Set obj = Nothing
%>
    然ASP文件却可以正常执行,其实,这种ASP代码是被一种加密算法加密了,那么,为何被加密了却可以正确执行?这种加密都有
一个共同的特征,需要临时解密,要在服务器注册一个对应的ASP代码解密组件,我们看到,代码的起始位置有一句创建组件的代码,
该组件将密文解密成原始的ASP脚本,再将脚本传入产生的临时文件或者脚本引擎组件(Msscript.ocx)解释执行。其中,产生临时
文件的方式可以达到完全兼容,无需任何人工修改量的效果。不论其ASP代码有多么复杂,都可以实现无错加密。那么,其具体的
工作原理又是怎样的呢?
    相信大多数ASP开发者都很想知道是怎样运行的,而另一种以封装DLL形式的加密方式没有秘密可言,使用AspToDll风火轮将其生成
VB6代码,然后编译通过就可。但这种ASP代码解密组件的代码却是黑匣子,其中有什么玄妙之处?虽然,对于专业技术人员来说,
这其实并不是什么秘密,不过,对于广大的ASP业余开发者或者一般电脑爱好者来说,却不是那么容易看出其端倪的,让AspToDll风火轮
为大家解开其神秘的面纱。
    打开AspToDll风火轮1.35版本,选择好你要加密的源文件目录,输出目录,再点击“编码加密”按钮,很快,目录下的所有ASP源文件
已经被编码并生成到输出目录的ASPCODE子目录中,检查当中的每一个文件,发现都被加密成了如上的怪字符,我们只需要将输出目录的
DLL子目录里面的AspDeCode.dll组件注册一下(运行RegDll.bat),再去访问AspCode目录里面的ASP文件,运行效果简直与加密之前
如出一辙,不论你的代码如何复杂,都不影响运行效果。
    那么,AspDeCode.dll里面又是具体如何工作的呢?相信广大业余开发者是最想知道的事情了,因此,AspToDll风火轮向大家直接提供了
AspDeCode.dll的源代码,就在AspToDll风火轮安装之后的AspDeCode子目录,为打开源代码,我们需要安装VB6,打开之后,我们发现
加密和解密以及运行的代码都非常简单,只有一个DeCode类,里面的加密解密算法就是几段标准的BASE64代码,在这里,我们只需要
重点介绍当中的RunCode过程,我们分析一下这段代码:
Public Sub RunCode()
On Error Resume Next
    Dim fso As New Scripting.FileSystemObject
    Dim f As Scripting.TextStream
    Dim strTemp As String
    strTemp = "~" & Rnd & ".tmp"
    Set f = fso.CreateTextFile(Server.MapPath(strTemp), True)
    f.Write DecodeBase64String(strCode)
    f.Close
    Server.Transfer strTemp
    DeleteFile Server.MapPath(strTemp)
End Sub
    AspDeCode.dll就是通过执行这一段RunCode过程运行ASP的,首先是创建一个fso组件对象,然后生成一个随机数字命名的临时文件,
将密文用BASE64解密,写入到临时文件中。最后,使用Server.Transfer方法转向到临时文件执行,然后删除临时文件,就这样完成任务了,
这种现买现卖的临时文件障眼法是不是很神奇呢?
    好了,既然ASP代码解密组件的代码向大家公开了,意味着可以随意修改AspDeCode.dll,个性化自己的ASP代码解密组件了,你可以增加一些
授权的代码,还可以修改加密算法,在AspToDll风火轮里面的编码型加密标签,点击“自定义算法”选项,在左边的文本框中写入标准VBScript
的加密算法,至于解密算法,你既可以在软件中写入解密算法,也可以直接修改AspDeCode.dll源代码实现。通过修改自定义的加密解密算法,
你已经可以打造出一款完全无错加密且又与众不同的ASP代码加密工具了。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ASP代码中的Base64加密解密工具可以通过以下步骤实现。 加密: 1. 获取要加密的字符串。 2. 将字符串转换为字节数组。 3. 使用ASP代码中的Base64编码函数对字节数组进行编码。 4. 将编码后的字符串作为加密结果返回。 解密: 1. 获取已经加密的Base64字符串。 2. 使用ASP代码中的Base64解码函数将字符串解码为字节数组。 3. 将解码后的字节数组转换为字符串。 4. 将解密后的字符串作为解密结果返回。 示例代码如下: ``` ' 加密函数 Function Base64Encode(str) Dim bytes, enc ' 将字符串转换为字节数组 bytes = StrToByteArray(str) ' 使用Base64编码函数进行编码 Set enc = Server.CreateObject("System.Text.Encoding") Base64Encode = enc.EncodeBytes_64(bytes) End Function ' 解密函数 Function Base64Decode(str) Dim bytes, enc ' 使用Base64解码函数进行解码 Set enc = Server.CreateObject("System.Text.Encoding") bytes = enc.DecodeBytes_64(str) ' 将字节数组转换为字符串 Base64Decode = ByteArrayToStr(bytes) End Function ' 将字符串转换为字节数组 Function StrToByteArray(str) Dim i, bytes ReDim bytes(Len(str) - 1) For i = 1 To Len(str) bytes(i - 1) = Asc(Mid(str, i, 1)) Next StrToByteArray = bytes End Function ' 将字节数组转换为字符串 Function ByteArrayToStr(bytes) Dim i, str For i = LBound(bytes) To UBound(bytes) str = str & Chr(bytes(i)) Next ByteArrayToStr = str End Function ``` 使用时,可以调用`Base64Encode`函数进行加密,以及调用`Base64Decode`函数进行解密

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值