如果防止破解(送50)解决办法
如果防止破解(送50)
我只想问下这类的问题 目前不讨论加壳问题
我编了软件,然后用VBExplorer 反编译我的软件 然后里面查找字符串 可以把我软件里所有字符串全部显示出来, 但有些字符串有关键作用
举个列子:
conn.Properties( "data source ").Value = "202.45.122.116 " '服务器的名字
conn.Properties( "initial catalog ").Value = "drj " '库名 "
conn.Properties( "Network Library ").Value= "DBNETLIB "
conn.Properties( "user id ").Value = "jacc " 帐号
conn.Properties( "password ").Value = "123456 " 密码
这是我连接数据库用的帐号密码 这样一来全部给别人看到了
我的问题就是是在编程序的时候如何能够让字符串不被检测出来,请高手帮忙
------解决方案--------------------
'用Encode码加密
Function MyASC(OneChar)
' 作用:转化非空字符为ASCII 码
If OneChar = " " Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function
Private Function Base64Encode(inData)
' 作用:将字符串inData 转换为Base64编码格式的字符串,作为函数返回值
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ "
Dim cOut, sOut, i
'每组数据三字节
For i = 1 To Len(inData) Step 3
Dim nGroup As Long
Dim pOut, sGroup
' 为三个字节创建一个长整型的整数(四字节)
nGroup = &H10000 * Asc(Mid(inData, i, 1)) + _
&H100 * MyASC(Mid(inData, i + 1, 1)) + _
MyASC(Mid(inData, i + 2, 1))
'Oct分割长整型为8组3bit的字符组合
sGroup = Oct(nGroup)
'添加前导零位
sGroup = String(8 - Len(sGroup), "0 ") & sGroup
'转化为base64 字符串
pOut = Mid(Base64, CLng( "&o " & Mid(sGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 7, 2)) + 1, 1)
'添加到输出字符串
sOut = sOut + pOut
' 为每76 个字符添加一个新行 (76*3/4 = 57)
If (i + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
Next
Select Case Len(inData) Mod 3
Case 1: '8 bit
sOut = Left(sOut, Len(sOut) - 2) + "== "
Case 2: '16 bit
sOut = Left(sOut, Len(sOut) - 1) + "= "
End Select
Base64Encode = sOut
End Function
'-----------------------------------------
Private Sub Command1_Click()
Dim sPwd As String
sPwd = Base64Encode( "123456 ")
MsgBox sPwd
End Sub
------解决方案--------------------
这个好办,楼主是不是把密码123456锁在了程序里?如果这样,你就必需改一下了,
conn.Properties( "password ").Value = "MTIzNDU2 " MTIzNDU2为ecode加密后的字符
,
假设密码输入框为text1.text,那 就用刚才的程序换成以下对比 :
Private Sub Command1_Click()
Dim sPwd As String
sPwd = Base64Encode(Text1.Text)
MsgBox sPwd
End Sub
意思就说到这了,也可以用MD5加密,16位32位都可以
------解决方案--------------------
别把字符串这样定义
一个一个字符连接赋值就不会看到这样的字符串了
------解决方案--------------------
呵呵,俺是对一长串随机数进行乱七八糟的复杂运算,不在同一个SUB或FUNC里,最后生成密码字串.
我只想问下这类的问题 目前不讨论加壳问题
我编了软件,然后用VBExplorer 反编译我的软件 然后里面查找字符串 可以把我软件里所有字符串全部显示出来, 但有些字符串有关键作用
举个列子:
conn.Properties( "data source ").Value = "202.45.122.116 " '服务器的名字
conn.Properties( "initial catalog ").Value = "drj " '库名 "
conn.Properties( "Network Library ").Value= "DBNETLIB "
conn.Properties( "user id ").Value = "jacc " 帐号
conn.Properties( "password ").Value = "123456 " 密码
这是我连接数据库用的帐号密码 这样一来全部给别人看到了
我的问题就是是在编程序的时候如何能够让字符串不被检测出来,请高手帮忙
------解决方案--------------------
'用Encode码加密
Function MyASC(OneChar)
' 作用:转化非空字符为ASCII 码
If OneChar = " " Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function
Private Function Base64Encode(inData)
' 作用:将字符串inData 转换为Base64编码格式的字符串,作为函数返回值
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ "
Dim cOut, sOut, i
'每组数据三字节
For i = 1 To Len(inData) Step 3
Dim nGroup As Long
Dim pOut, sGroup
' 为三个字节创建一个长整型的整数(四字节)
nGroup = &H10000 * Asc(Mid(inData, i, 1)) + _
&H100 * MyASC(Mid(inData, i + 1, 1)) + _
MyASC(Mid(inData, i + 2, 1))
'Oct分割长整型为8组3bit的字符组合
sGroup = Oct(nGroup)
'添加前导零位
sGroup = String(8 - Len(sGroup), "0 ") & sGroup
'转化为base64 字符串
pOut = Mid(Base64, CLng( "&o " & Mid(sGroup, 1, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 3, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 5, 2)) + 1, 1) + _
Mid(Base64, CLng( "&o " & Mid(sGroup, 7, 2)) + 1, 1)
'添加到输出字符串
sOut = sOut + pOut
' 为每76 个字符添加一个新行 (76*3/4 = 57)
If (i + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
Next
Select Case Len(inData) Mod 3
Case 1: '8 bit
sOut = Left(sOut, Len(sOut) - 2) + "== "
Case 2: '16 bit
sOut = Left(sOut, Len(sOut) - 1) + "= "
End Select
Base64Encode = sOut
End Function
'-----------------------------------------
Private Sub Command1_Click()
Dim sPwd As String
sPwd = Base64Encode( "123456 ")
MsgBox sPwd
End Sub
------解决方案--------------------
这个好办,楼主是不是把密码123456锁在了程序里?如果这样,你就必需改一下了,
conn.Properties( "password ").Value = "MTIzNDU2 " MTIzNDU2为ecode加密后的字符
,
假设密码输入框为text1.text,那 就用刚才的程序换成以下对比 :
Private Sub Command1_Click()
Dim sPwd As String
sPwd = Base64Encode(Text1.Text)
MsgBox sPwd
End Sub
意思就说到这了,也可以用MD5加密,16位32位都可以
------解决方案--------------------
别把字符串这样定义
一个一个字符连接赋值就不会看到这样的字符串了
------解决方案--------------------
呵呵,俺是对一长串随机数进行乱七八糟的复杂运算,不在同一个SUB或FUNC里,最后生成密码字串.