首页
社区
课程
招聘
[求助]能不能给我讲讲这段代码的意思
发表于: 2005-9-6 18:57 3513

[求助]能不能给我讲讲这段代码的意思

2005-9-6 18:57
3513
0048C277   |> /8D45 F4       /lea eax,dword ptr ss:[ebp-C]
0048C27A   |. |E8 9D87F7FF   |call SQLUnLoc.00404A1C
0048C27F   |. |8BFB          |mov edi,ebx
0048C281   |. |81E7 FF000000 |and edi,0FF
0048C287   |. |8B55 FC       |mov edx,dword ptr ss:[ebp-4]
0048C28A   |. |8A543A FF     |mov dl,byte ptr ds:[edx+edi-1]
0048C28E   |. |0FB7CE        |movzx ecx,si
0048C291   |. |C1E9 08       |shr ecx,8
0048C294   |. |32D1          |xor dl,cl
0048C296   |. |885438 FF     |mov byte ptr ds:[eax+edi-1],dl
0048C29A   |. |8B45 FC       |mov eax,dword ptr ss:[ebp-4]
0048C29D   |. |0FB64438 FF   |movzx eax,byte ptr ds:[eax+edi-1]
0048C2A2   |. |66:03F0       |add si,ax
0048C2A5   |. |66:83C6 32    |add si,32
0048C2A9   |. |66:83C6 32    |add si,32
0048C2AD   |. |43            |inc ebx
0048C2AE   |. |FE4D F3       |dec byte ptr ss:[ebp-D]
0048C2B1   |.^\75 C4         \jnz short SQLUnLoc.0048C277

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 259
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
自己的文章自己来回哦:

0048C277   |> /8D45 F4       /lea eax,dword ptr ss:[ebp-C]
0048C27A   |. |E8 9D87F7FF   |call SQLUnLoc.00404A1C       //取CPUID机器码
0048C27F   |. |8BFB          |mov edi,ebx                    //EBX循环计数器
0048C281   |. |81E7 FF000000 |and edi,0FF
0048C287   |. |8B55 FC       |mov edx,dword ptr ss:[ebp-4]     //将一常量移到EDX,此常量在前面定义,为1982,每循环一次,此值加某值
0048C28A   |. |8A543A FF     |mov dl,byte ptr ds:[edx+edi-1]  //将CPUID的值的一位(对应循环变量)取出,放入DL
0048C28E   |. |0FB7CE        |movzx ecx,si   //前面的常量移到ECX
0048C291   |. |C1E9 08       |shr ecx,8     //将ECX中的值逻辑右移8位
0048C294   |. |32D1          |xor dl,cl     //将DL,CL异或运算。
0048C296   |. |885438 FF     |mov byte ptr ds:[eax+edi-1],dl
0048C29A   |. |8B45 FC       |mov eax,dword ptr ss:[ebp-4]
0048C29D   |. |0FB64438 FF   |movzx eax,byte ptr ds:[eax+edi-1]
0048C2A2   |. |66:03F0       |add si,ax     //常量加CPUID的参与运算的那一位。
0048C2A5   |. |66:83C6 32    |add si,32    //常量加50
0048C2A9   |. |66:83C6 32    |add si,32    //常量加50
0048C2AD   |. |43            |inc ebx     //计数器加1
0048C2AE   |. |FE4D F3       |dec byte ptr ss:[ebp-D]   //循环减1
0048C2B1   |.^\75 C4         \jnz short SQLUnLoc.0048C277

此工具为存储过程解密工具6.0的注册机
下载地址http://www.xunxin.cn/,为在线免费注册方式.
附注册机代码
Private Sub cmd获取注册码_Click()
    If Me.txtUserMID.Text <> "" Then
        If Len(Trim(Me.txtUserMID.Text)) <> "29" Then
            MsgBox "机器码长度不为29位"
        Else
            Me.txtPassWd.Text = getSerialNo
        End If
    Else
        MsgBox "请输入机器码"
    End If
End Sub

Private Function getSerialNo() As String
    On Err GoTo PrintErr
    Dim n As Long
    n = &H7BE
    Dim MNo As String
    MNo = Me.txtUserMID.Text
    Dim tmp As String
    tmp = ""
    Dim I As Integer
    For I = 1 To Len(Me.txtUserMID.Text)
        Dim strChar As String
        strChar = Right(Left(MNo, I), 1)
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer
        Dim d As Long
        d = n
        a = "&h" & Hex(BinaryToDecimal(Left(DecimalToBinary(d, 16), Len(DecimalToBinary(d, 16)) - 8)))
        b = "&h" & Hex(Asc(strChar))
        c = a Xor b
        tmp = tmp & Chr(c)
        n = n + CInt(b) + 100
    Next
    getSerialNo = tmp
    Exit Function
PrintErr:
    MsgBox Err.Description
    Exit Function
End Function

''''以下VB函数可以完成十进制转换二进制的工作。另外,这个函数还加入了对二进制长度的判断,如果转换出来的二进制长度低于最小值,函数会自动在二进制字符串前补0。
Public Function DecimalToBinary(DecimalValue As Long, MinimumDigits As Integer) As String

' Returns a string containing the binary
' representation of a positive integer.

Dim result As String
Dim ExtraDigitsNeeded As Integer

' Make sure value is not negative.
DecimalValue = Abs(DecimalValue)

' Construct the binary value.
Do
    result = CStr(DecimalValue Mod 2) & result
    DecimalValue = DecimalValue \ 2
Loop While DecimalValue > 0

' Add leading zeros if needed.

ExtraDigitsNeeded = MinimumDigits - Len(result)
If ExtraDigitsNeeded > 0 Then
    result = String(ExtraDigitsNeeded, "0") & result
End If

DecimalToBinary = result

End Function

'以下代码完成二进制到十进制的转换:

Public Function BinaryToDecimal(BinaryValue As String) As Long

' Returns the decimal equivalent of a binary number.

Dim idx As Integer
Dim tmp As String
Dim result As Long
Dim digits As Integer

digits = Len(BinaryValue)
For idx = digits To 1 Step -1
    tmp = Mid(BinaryValue, idx, 1)
    If tmp = "1" Then result = result + 2 ^ (digits - idx)
Next

BinaryToDecimal = result

End Function
2005-9-10 09:29
0
游客
登录 | 注册 方可回帖
返回
//