lzq1973 发表于 2007-12-15 17:30:16

【破文标题】SQL管理器 5.0解码分析

【破文标题】SQL管理器 5.0解码分析
【破文作者】lzq1973
【作者邮箱】[email protected]
【作者主页】http://my.winzheng.com/?455397
【破解工具】OD、PEiD、C32Asm
【破解平台】WinXP
【软件名称】SQL管理器 5.0
【软件大小】363KB
【原版下载】http://www.sharebank.com.cn/soft/SoftView_24394.htm

【保护方式】SN
【软件简介】功能说明:
1、实现远程连接数据服务器。
2、对数据库进行“备份、恢复、日志文件清除”。
3、提取多个表的结构,并可保存。
4、可以把表中记录直接生成“Insert、Delete、Update”语句,便于使用。
5、可以直接提取表中记录值。
6、可以对多表进行备份。
7、可以直接在此运行SQL语句。

【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】   OD载入,来到这里

004C6991   .50            push    eax
004C6992   .B9 02000080   mov   ecx, 80000002
004C6997   .BA 546D4C00   mov   edx, 004C6D54                  ;serialno
004C699C   .B8 686D4C00   mov   eax, 004C6D68                  ;software\microsoft\windows\currentversion\explorer\movecont_sql
004C69A1   .E8 AEFAFFFF   call    004C6454
004C69A6   .8D45 EC       lea   eax,
004C69A9   .50            push    eax
004C69AA   .8D45 E8       lea   eax,
004C69AD   .50            push    eax
004C69AE   .8D45 E4       lea   eax,
004C69B1   .E8 6AEAFFFF   call    004C5420
004C69B6   .8B45 E4       mov   eax,
004C69B9   .8BCE          mov   ecx, esi
004C69BB   .8BD3          mov   edx, ebx
004C69BD   .E8 36E8FFFF   call    004C51F8
004C69C2   .8B45 E8       mov   eax,                   ;机器码(ASCII "00096535")
004C69C5   .8B4D 0C       mov   ecx,
004C69C8   .8BD7          mov   edx, edi
004C69CA   .E8 6DE6FFFF   call    004C503C                         ;关键处
004C69CF   .8B55 EC       mov   edx,                   ;(ASCII "5885-0-480-0")
004C69D2   .8B45 F4       mov   eax,
004C69D5   .E8 EAE0F3FF   call    00404AC4
004C69DA   .75 1A         jnz   short 004C69F6
004C69DC   .8B45 08       mov   eax,
004C69DF   .BA B06D4C00   mov   edx, 004C6DB0                  ;1

=====================004C69CA   .E8 6DE6FFFF   call    004C503C==================

004C503C/$55            push    ebp
004C503D|.8BEC          mov   ebp, esp
004C503F|.51            push    ecx
004C5040|.B9 07000000   mov   ecx, 7
004C5045|>6A 00         /push    0
004C5047|.6A 00         |push    0
004C5049|.49            |dec   ecx
004C504A|.^ 75 F9         \jnz   short 004C5045
004C504C|.874D FC       xchg    , ecx
004C504F|.53            push    ebx
004C5050|.56            push    esi
004C5051|.8BF1          mov   esi, ecx
004C5053|.8BDA          mov   ebx, edx
004C5055|.8945 FC       mov   , eax                     ;机器码(ASCII "00096535")
004C5058|.8B45 FC       mov   eax,
004C505B|.E8 08FBF3FF   call    00404B68
004C5060|.33C0          xor   eax, eax
004C5062|.55            push    ebp
004C5063|.68 CF514C00   push    004C51CF
004C5068|.64:FF30       push    dword ptr fs:
004C506B|.64:8920       mov   fs:, esp
004C506E|.8D45 F8       lea   eax,
004C5071|.50            push    eax
004C5072|.8D45 E0       lea   eax,
004C5075|.50            push    eax
004C5076|.B9 02000000   mov   ecx, 2                           ;取前2位
004C507B|.33D2          xor   edx, edx
004C507D|.8B45 FC       mov   eax,
004C5080|.E8 53FBF3FF   call    00404BD8
004C5085|.8B45 E0       mov   eax,                   ;(ASCII "00")
004C5088|.E8 9740F4FF   call    00409124
004C508D|.F7EB          imul    ebx                              ; |EAX=EBX×EAX
004C508F|.8945 E4       mov   , eax                  ; |EBP1C=EAX
004C5092|.C645 E8 00    mov   byte ptr , 0             ; |
004C5096|.8D55 E4       lea   edx,                   ; |
004C5099|.33C9          xor   ecx, ecx                         ; |
004C509B|.B8 E8514C00   mov   eax, 004C51E8                  ; |ASCII "%d"
004C50A0|.E8 D34BF4FF   call    00409C78                         ; \P_SQLMan.00409C78
004C50A5|.8D45 F4       lea   eax,
004C50A8|.50            push    eax
004C50A9|.8D45 DC       lea   eax,
004C50AC|.50            push    eax
004C50AD|.B9 02000000   mov   ecx, 2                           ;取2位
004C50B2|.BA 02000000   mov   edx, 2                           ;从第二位开始,即2、3位
004C50B7|.8B45 FC       mov   eax,
004C50BA|.E8 19FBF3FF   call    00404BD8
004C50BF|.8B45 DC       mov   eax,
004C50C2|.E8 5D40F4FF   call    00409124
004C50C7|.F7EE          imul    esi                              ; |EAX=ESI×EAX
004C50C9|.8945 E4       mov   , eax                  ; |
004C50CC|.C645 E8 00    mov   byte ptr , 0             ; |
004C50D0|.8D55 E4       lea   edx,                   ; |
004C50D3|.33C9          xor   ecx, ecx                         ; |
004C50D5|.B8 E8514C00   mov   eax, 004C51E8                  ; |ASCII "%d"
004C50DA|.E8 994BF4FF   call    00409C78                         ; \P_SQLMan.00409C78
004C50DF|.8D45 F0       lea   eax,
004C50E2|.50            push    eax
004C50E3|.8D45 D8       lea   eax,
004C50E6|.50            push    eax
004C50E7|.B9 02000000   mov   ecx, 2                           ;取2位
004C50EC|.BA 04000000   mov   edx, 4                           ;从第4位开始,即4、5位
004C50F1|.8B45 FC       mov   eax,
004C50F4|.E8 DFFAF3FF   call    00404BD8
004C50F9|.8B45 D8       mov   eax,                   ;(ASCII "96")
004C50FC|.E8 2340F4FF   call    00409124
004C5101|.F7EB          imul    ebx                              ; |EAX=EBX×EAX
004C5103|.8945 E4       mov   , eax                  ; |
004C5106|.C645 E8 00    mov   byte ptr , 0             ; |
004C510A|.8D55 E4       lea   edx,                   ; |
004C510D|.33C9          xor   ecx, ecx                         ; |
004C510F|.B8 E8514C00   mov   eax, 004C51E8                  ; |ASCII "%d"
004C5114|.E8 5F4BF4FF   call    00409C78                         ; \P_SQLMan.00409C78
004C5119|.8D45 EC       lea   eax,
004C511C|.50            push    eax
004C511D|.8D45 D4       lea   eax,
004C5120|.50            push    eax
004C5121|.B9 03000000   mov   ecx, 3                           ;取三位
004C5126|.BA 06000000   mov   edx, 6                           ;从第6位开始
004C512B|.8B45 FC       mov   eax,
004C512E|.E8 A5FAF3FF   call    00404BD8
004C5133|.8B45 D4       mov   eax,                   ;(ASCII "535")
004C5136|.E8 E93FF4FF   call    00409124
004C513B|.F7EE          imul    esi                              ; |
004C513D|.8945 E4       mov   , eax                  ; |
004C5140|.C645 E8 00    mov   byte ptr , 0             ; |
004C5144|.8D55 E4       lea   edx,                   ; |
004C5147|.33C9          xor   ecx, ecx                         ; |
004C5149|.B8 E8514C00   mov   eax, 004C51E8                  ; |ASCII "%d"
004C514E|.E8 254BF4FF   call    00409C78                         ; \P_SQLMan.00409C78
004C5153|.8D55 D0       lea   edx,
004C5156|.8B45 EC       mov   eax,                   ;转为10进制 (ASCII "5885")
004C5159|.E8 0A3CF4FF   call    00408D68
004C515E|.FF75 D0       push    dword ptr
004C5161|.68 F4514C00   push    004C51F4
004C5166|.8D55 CC       lea   edx,
004C5169|.8B45 F8       mov   eax,                      ;这里为0
004C516C|.E8 F73BF4FF   call    00408D68
004C5171|.FF75 CC       push    dword ptr
004C5174|.68 F4514C00   push    004C51F4
004C5179|.8D55 C8       lea   edx,
004C517C|.8B45 F0       mov   eax,                   ;转为10进制 (ASCII "480")
004C517F|.E8 E43BF4FF   call    00408D68
004C5184|.FF75 C8       push    dword ptr
004C5187|.68 F4514C00   push    004C51F4
004C518C|.8D55 C4       lea   edx,
004C518F|.8B45 F4       mov   eax,                      ;这里为0
004C5192|.E8 D13BF4FF   call    00408D68
004C5197|.FF75 C4       push    dword ptr
004C519A|.8B45 08       mov   eax,
004C519D|.BA 07000000   mov   edx, 7
004C51A2|.E8 99F8F3FF   call    00404A40
004C51A7|.33C0          xor   eax, eax
004C51A9|.5A            pop   edx
004C51AA|.59            pop   ecx
004C51AB|.59            pop   ecx
004C51AC|.64:8910       mov   fs:, edx
004C51AF|.68 D6514C00   push    004C51D6
004C51B4|>8D45 C4       lea   eax,
004C51B7|.BA 08000000   mov   edx, 8
004C51BC|.E8 2BF5F3FF   call    004046EC
004C51C1|.8D45 EC       lea   eax,
004C51C4|.BA 05000000   mov   edx, 5
004C51C9|.E8 1EF5F3FF   call    004046EC
004C51CE\.C3            retn
004C51CF   .^ E9 3CEEF3FF   jmp   00404010
004C51D4   .^ EB DE         jmp   short 004C51B4
004C51D6   .5E            pop   esi
004C51D7   .5B            pop   ebx
004C51D8   .8BE5          mov   esp, ebp
004C51DA   .5D            pop   ebp
004C51DB   .C2 0400       retn    4


------------------------------------------------------------------------
【破解总结】
1、取机器的第6、7、8位乘以11为SN1;
2、取机器的前两位乘以5为SN2;
3、取机器的第4、5位乘以5为SN3;
4、取机器的第2、3位乘以11为SN4;
5、SN=SN1+SN2+SN3+SN4
注:这里的“+”为连接符

附注册机源码:

.版本 2

内容 = 编辑框1.内容
len = 取文本长度 (内容)
.如果 (编辑框1.内容 ≠ “”)
    sn1 = 取文本左边 (内容, 2)
    sn1 = 到文本 (到数值 (sn1) × 5)
    sn2 = 取文本中间 (内容, 2, 2)
    sn2 = 到文本 (到数值 (sn2) × 11)
    sn3 = 取文本中间 (内容, 4, 2)
    sn3 = 到文本 (到数值 (sn3) × 5)
    sn4 = 取文本中间 (内容, 6, 3)
    sn4 = 到文本 (到数值 (sn4) × 11)
    Sn = sn4 + “-” + sn1 + “-” + sn3 + “-” + sn2
    编辑框2.内容 = Sn
.否则
    信息框 (“机器码是否输入正确?”, 0, “提示”)
   

------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
页: [1]
查看完整版本: 【破文标题】SQL管理器 5.0解码分析