havano 发表于 2006-4-28 09:33:40

我使用此线程中提到的加密变体编译为dll,并使用其他功能密钥对程序的操作进行加密;所有字符串信息都加密了,我的意思是全部。拥有一个返回用户是否可以继续的标志的加密模块是不够的——他们所要做的就是弄清楚调用了哪个函数,编写他们自己的具有相同函数签名的dll,让所说的函数返回真/什么和噗,他们可以访问。
这对我很有帮助很多年了。

havano 发表于 2006-4-29 19:09:45

谢谢MP,我想在用INI文件陪伴应用程序的行中,其中包含授权Autocad用户的加密序列号。主应用程序读取它调用的 Autocad 对象的序列号,并将其与加密的序列号进行核对。我在互联网上找到了一个免费的河豚en-/decryption dll,我可以使用:blofsh10.dll
'This gets the current Autocad serial number
Dim Serialnumber As String
Serialnumber = ThisDrawing.GetVariable("_PKSER")
为了防止人们用规避检查的dll替换dll,INI文件可以包含一个控制字符串,该字符串必须使用主应用程序中的硬编码密码(解密密钥)正确解密。

Draftek 发表于 2006-5-4 21:04:02


我赞成!
我在这里放了一个制作dll的vb项目示例:
http://www . website toolbox . com/tool/post/mill lister/vpost?id=1071084
将您的代码放在那里,阅读说明,然后就完成了。
如有任何问题,请随时打电话给我。
戴夫

DaveW 发表于 2006-5-22 00:28:31

我不介意对密钥/密码字符串使用简单的XOR加密。但是,如何将生成的字符串保持在0-9,A-Z,a-z等范围内,并能够准确地对其进行解密?
一个示例代码片段会很好!

havano 发表于 2006-5-22 01:41:14


简单且快速完成-
Function Encrypt(ByVal text As String, _
               ByVal mask As String) _
               As String
    Dim i         As Long, _
      j         As Long
   
    Dim textBytes() As Byte, _
      maskBytes() As Byte
      
    Dim lbMask      As Long, _
      ubMask      As Long
      
    Dim xorCode   As Integer
    textBytes = text
    maskBytes = mask
   
    lbMask = LBound(maskBytes)
    ubMask = UBound(maskBytes)
   
    j = LBound(maskBytes)
   
    For i = LBound(textBytes) To UBound(textBytes) Step 2
      xorCode = textBytes(i) Xor maskBytes(j)
      ''modify this to suit
      If3234 Then textBytes(i) = xorCode
      j = j + 2: If ubMask < j Then j = lbMask
    Next i
   
    Encrypt = textBytes
End Function
在VB的即时窗口中测试-
?encrypt(" http://www . the swamp . org "," 123456")
YFGD://EDC。BYW@CT[A.\FR
?加密(" YFGD://EDC。BYW@CT[A.\FR "," 123456 ")
http://www . the swamp . org
页: 1 [2]
查看完整版本: 如何防止VB(a)应用程序被劫持?