• 标 题:简单算法——AKoff Music Composer V2.0
  • 作 者:fly
  • 时 间:2003/03/07 12:51pm
  • 链 接:http://bbs.pediy.com

简单算法——AKoff Music Composer V2.0  


下载页面:  http://www.skycn.com/soft/1869.html
软件大小:  255 KB
软件语言:  英文
软件类别:  国外软件 / 共享版 / 音频转换
应用平台:  Win9x/NT/2000/XP
加入时间:  2002-07-01 14:36:00
下载次数:  6806
推荐等级:  ****

【软件简介】:小巧的音乐转换处理软件。集 MIDI 播放及轨迹检视、WAVE->MIDI转换等功能于一身的迷你软件。有了它,您就可以轻松地获取来至麦克风、线形输入或音频 CD 等各种音源的音频数据信息,予以分析识别和转换,而不需要外接任何 DLL(动态链接库)文件。

【软件限制】:功能限制、30天试用

【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【破解工具】:TRW2000娃娃修改版、FI2.5、W32Dasm8.93黄金版

—————————————————————————————————
【过    程】:


Composer.exe 无壳,C++ 编写。反汇编吧,查找关键提示。

Your E-mail: fly@263.net
试  炼  码 : 135726489012

—————————————————————————————————
:0040436B E8CA980100              Call 0041DC3A
:00404370 E8DBF6FFFF              call 00403A50
                                 ====>关键CALL!F8进入!

:00404375 833DC8EC410000          cmp dword ptr [0041ECC8], 00000000
                                 ====> [0041ECC8]应是注册标志位了。
                          搜索了一下,却发现关键部分正好在上面的CALL里。

:0040437C 7450                    je 004043CE
                                 ====>跳则OVER!

:0040437E 33C0                    xor eax, eax
:00404380 83C9FF                  or ecx, FFFFFFFF

* Possible Reference to Dialog:  
                                 |
:00404383 BF81E14100              mov edi, 0041E181
:00404388 8DB5F0FEFFFF            lea esi, dword ptr [ebp+FFFFFEF0]
:0040438E F2                      repnz
:0040438F AE                      scasb
:00404390 F7D1                    not ecx
:00404392 2BF9                    sub edi, ecx
:00404394 8BD1                    mov edx, ecx
:00404396 87F7                    xchg edi, esi
:00404398 C1E902                  shr ecx, 02
:0040439B 8BC7                    mov eax, edi
:0040439D F3                      repz
:0040439E A5                      movsd
:0040439F 8BCA                    mov ecx, edx
:004043A1 8D85F0FEFFFF            lea eax, dword ptr [ebp+FFFFFEF0]
:004043A7 83E103                  and ecx, 00000003
:004043AA F3                      repz
:004043AB A4                      movsb

* Possible StringData Ref from Data Obj ->" - Registered"
                                 ====>呵呵,胜利女神!

:004043AC 6868F84100              push 0041F868
:004043B1 50                      push eax
:004043B2 E875160100              call 00415A2C
:004043B7 83C408                  add esp, 00000008
:004043BA 50                      push eax
:004043BB 8B158CE24100            mov edx, dword ptr [0041E28C]
:004043C1 52                      push edx

* Reference To: USER32.SetWindowTextA, Ord:0000h
                                 |
:004043C2 E81B990100              Call 0041DCE2
:004043C7 E8A0FAFFFF              call 00403E6C
:004043CC EB12                    jmp 004043E0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040437C(C)
|
:004043CE 6A30                    push 00000030

* Possible Reference to Dialog:  
                                 |
:004043D0 6890F84100              push 0041F890

* Possible StringData Ref from Data Obj ->"Not valid Code or E-mail."
                                 ====>BAD BOY!
                                 
:004043D5 6876F84100              push 0041F876
:004043DA 53                      push ebx

* Reference To: USER32.MessageBoxA, Ord:0000h
                                 |
:004043DB E8A8980100              Call 0041DC88


—————————————————————————————————
F8进入 404370  call 00403A50


* Referenced by a CALL at Addresses:
|:004011F7   , :00404370  
|
:00403A50 56                      push esi
:00403A51 57                      push edi
:00403A52 83C4EC                  add esp, FFFFFFEC

* Possible Reference to Dialog:  
                                 |
:00403A55 B8CBF64100              mov eax, 0041F6CB
:00403A5A BAC1EB4100              mov edx, 0041EBC1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403A79(C)
|
:00403A5F 8A08                    mov cl, byte ptr [eax]
:00403A61 3A0A                    cmp cl, byte ptr [edx]
:00403A63 7516                    jne 00403A7B
:00403A65 84C9                    test cl, cl
:00403A67 743C                    je 00403AA5
:00403A69 8A4801                  mov cl, byte ptr [eax+01]
:00403A6C 3A4A01                  cmp cl, byte ptr [edx+01]
:00403A6F 750A                    jne 00403A7B
:00403A71 83C002                  add eax, 00000002
:00403A74 83C202                  add edx, 00000002
:00403A77 84C9                    test cl, cl
:00403A79 75E4                    jne 00403A5F

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403A63(C), :00403A6F(C)
|
:00403A7B 7428                    je 00403AA5

* Possible StringData Ref from Data Obj ->"镱溧痤?
                                 |
:00403A7D B8D3F64100              mov eax, 0041F6D3
:00403A82 BABCEA4100              mov edx, 0041EABC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403AA1(C)
|
:00403A87 8A08                    mov cl, byte ptr [eax]
:00403A89 3A0A                    cmp cl, byte ptr [edx]
:00403A8B 7524                    jne 00403AB1
:00403A8D 84C9                    test cl, cl
:00403A8F 7412                    je 00403AA3
:00403A91 8A4801                  mov cl, byte ptr [eax+01]
:00403A94 3A4A01                  cmp cl, byte ptr [edx+01]
:00403A97 7518                    jne 00403AB1
:00403A99 83C002                  add eax, 00000002
:00403A9C 83C202                  add edx, 00000002
:00403A9F 84C9                    test cl, cl
:00403AA1 75E4                    jne 00403A87

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403A8F(C)
|
:00403AA3 750C                    jne 00403AB1

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403A67(C), :00403A7B(C)
|

* Possible Reference to String Resource ID=00001: "AKoff Music Composer - Version 2.0"
                                 |
:00403AA5 C705C8EC410001000000    mov dword ptr [0041ECC8], 00000001
:00403AAF EB72                    jmp 00403B23

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403A8B(C), :00403A97(C), :00403AA3(C)
|
:00403AB1 BE75F14100              mov esi, 0041F175
:00403AB6 8BFC                    mov edi, esp

* Possible Reference to String Resource ID=00005: "Pan"
                                 |
:00403AB8 B905000000              mov ecx, 00000005
:00403ABD F3                      repz
:00403ABE A5                      movsd
:00403ABF 54                      push esp
:00403AC0 E8EBFDFFFF              call 004038B0
                                 ====>算法CALL!F8进入!

:00403AC5 59                      pop ecx
:00403AC6 54                      push esp
:00403AC7 E8F01F0100              call 00415ABC
                                 ====>取注册码位数

:00403ACC 59                      pop ecx
:00403ACD 83F80C                  cmp eax, 0000000C
                                 ====>是否12位?

:00403AD0 7510                    jne 00403AE2

* Possible Reference to Dialog:  
                                 |
:00403AD2 68C1EB4100              push 0041EBC1
:00403AD7 E8E01F0100              call 00415ABC
                                 ====>取试炼码位数

:00403ADC 59                      pop ecx
:00403ADD 83F80C                  cmp eax, 0000000C
                                 ====>是否12位?

:00403AE0 7409                    je 00403AEB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403AD0(C)
|
:00403AE2 33C0                    xor eax, eax
:00403AE4 A3C8EC4100              mov dword ptr [0041ECC8], eax
:00403AE9 EB38                    jmp 00403B23

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403AE0(C)
|
:00403AEB 8BC4                    mov eax, esp
                                 ====>注册码 入 EAX

* Possible Reference to Dialog:  
                                 
:00403AED BAC1EB4100              mov edx, 0041EBC1
                                 ====>试炼码 入 EDX

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403B0C(C)
                                 ====>逐位比较了!

:00403AF2 8A08                    mov cl, byte ptr [eax]
:00403AF4 3A0A                    cmp cl, byte ptr [edx]
:00403AF6 7524                    jne 00403B1C
:00403AF8 84C9                    test cl, cl
:00403AFA 7412                    je 00403B0E
:00403AFC 8A4801                  mov cl, byte ptr [eax+01]
:00403AFF 3A4A01                  cmp cl, byte ptr [edx+01]
:00403B02 7518                    jne 00403B1C
:00403B04 83C002                  add eax, 00000002
:00403B07 83C202                  add edx, 00000002
:00403B0A 84C9                    test cl, cl
:00403B0C 75E4                    jne 00403AF2

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403AFA(C)
|
:00403B0E 750C                    jne 00403B1C

* Possible Reference to String Resource ID=00001: "AKoff Music Composer - Version 2.0"
                                 |
:00403B10 C705C8EC410001000000    mov dword ptr [0041ECC8], 00000001
                                 ====>注册标志位  置1 !    OK!

:00403B1A EB07                    jmp 00403B23

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403AF6(C), :00403B02(C), :00403B0E(C)
|
:00403B1C 33C0                    xor eax, eax
                                 ====>EAX 清零

:00403B1E A3C8EC4100              mov dword ptr [0041ECC8], eax
                                 ====>注册标志位  置0 !    OVER!

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403AAF(U), :00403AE9(U), :00403B1A(U)
|
:00403B23 83C414                  add esp, 00000014
:00403B26 5F                      pop edi
:00403B27 5E                      pop esi
:00403B28 C3                      ret

—————————————————————————————————

F8进入算法CALL:403AC0   call 004038B0


* Referenced by a CALL at Addresses:
|:00403AC0   , :0040427D  
|
:004038B0 55                      push ebp
:004038B1 8BEC                    mov ebp, esp
:004038B3 83C4E8                  add esp, FFFFFFE8
:004038B6 53                      push ebx
:004038B7 56                      push esi
:004038B8 57                      push edi
:004038B9 33FF                    xor edi, edi
:004038BB 68BCEA4100              push 0041EABC
                                 ====>fly@263.net

:004038C0 E8F7210100              call 00415ABC
                                 ====>取E-mail的长度,检测其格式

:004038C5 59                      pop ecx
:004038C6 83F805                  cmp eax, 00000005
                                 ====>EAX=11

:004038C9 730B                    jnb 004038D6
                                 ====>不能少于5位!

:004038CB 8B4508                  mov eax, dword ptr [ebp+08]
:004038CE C60000                  mov byte ptr [eax], 00
:004038D1 E99E000000              jmp 00403974

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004038C9(C)
|
:004038D6 33DB                    xor ebx, ebx

* Possible Reference to Dialog:  
                                 |
:004038D8 BEBCEA4100              mov esi, 0041EABC
                                 ====>ESI=fly@263.net

:004038DD EB07                    jmp 004038E6

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004038F3(C)
|
:004038DF 0FBE06                  movsx eax, byte ptr [esi]
                                 ====>依次取fly@263.net字符的HEX值
                              1、====>EAX=66
                              2、====>EAX=6C
                              3、====>EAX=79
                        …… ……  省  略  …… ……
                             11、====>EAX=74

:004038E2 03F8                    add edi, eax
                                 ====>累加!
                              1、====>EDI=00+66=66
                              2、====>EDI=66+6C=D2
                              3、====>EDI=D2+79=14B
                        …… ……  省  略  …… ……
                             11、====>EDI=327+74=39B


:004038E4 43                      inc ebx
                                 ====>依次增1

:004038E5 46                      inc esi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004038DD(U)
|
:004038E6 68BCEA4100              push 0041EABC
:004038EB E8CC210100              call 00415ABC
:004038F0 59                      pop ecx
:004038F1 3BD8                    cmp ebx, eax
                                 ====>共循环E-mail的位数11次
:004038F3 7CEA                    jl 004038DF
                                 ====>取完了吗?继续循环!

:004038F5 B97B000000              mov ecx, 0000007B
                                 ====>7B 入 ECX

:004038FA 8BC7                    mov eax, edi
                                 ====>EAX=EDI=39B

:004038FC 99                      cdq
:004038FD F7F9                    idiv ecx
                                 ====>EAX=39B % 7B=余数:3E

:004038FF 89D7                    mov edi, edx
                                 ====>3E 入 EDI

:00403901 33DB                    xor ebx, ebx
:00403903 8D45E8                  lea eax, dword ptr [ebp-18]

* Possible Reference to Dialog:  
                                 |
:00403906 BABCEA4100              mov edx, 0041EABC
                                 ====>EDX=fly@263.net

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403926(C)
|
:0040390B 0FBE0A                  movsx ecx, byte ptr [edx]
                                 ====>依次取fly@263.net前5位字符的HEX值
                              1、====>ECX=66
                              2、====>ECX=6C
                              3、====>ECX=79
                              4、====>ECX=40
                              5、====>ECX=32

:0040390E 03CF                    add ecx, edi
                              1、====>EDI=66+3E=A4
                              2、====>EDI=6C+3E=AA
                              3、====>EDI=79+3E=B7
                              4、====>EDI=40+3E=7E
                              5、====>EDI=32+3E=70

:00403910 8908                    mov dword ptr [eax], ecx
                                 ====>结果依次存入 [EAX] 处

:00403912 81F9FF000000            cmp ecx, 000000FF
                                 ====>结果大于FF?

:00403918 7E04                    jle 0040391E
                                 ====>结果不大于FF就跳。

:0040391A 33C9                    xor ecx, ecx
                                 ====>否则 ECX 清零

:0040391C 8908                    mov dword ptr [eax], ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403918(C)
|
:0040391E 43                      inc ebx
:0040391F 83C004                  add eax, 00000004
:00403922 42                      inc edx
:00403923 83FB05                  cmp ebx, 00000005
                                 ====>取前5位

:00403926 7CE3                    jl 0040390B
                                 ====>继续循环

:00403928 897DFC                  mov dword ptr [ebp-04], edi
:0040392B 33DB                    xor ebx, ebx
:0040392D 8B4508                  mov eax, dword ptr [ebp+08]
:00403930 8BD0                    mov edx, eax
:00403932 8D45E8                  lea eax, dword ptr [ebp-18]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040396B(C)
|
:00403935 8B08                    mov ecx, dword ptr [eax]
                              1、====>ECX=A4
                              2、====>ECX=AA
                              3、====>ECX=B7
                              4、====>ECX=7E
                              5、====>ECX=70
                              6、====>ECX=3E

:00403937 85C9                    test ecx, ecx
:00403939 7903                    jns 0040393E
:0040393B 83C10F                  add ecx, 0000000F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403939(C)
|
:0040393E C1F904                  sar ecx, 04
  (同0040394B处分别取前、后位) ====>算术右移4次!
                              1、====>ECX=A
                              2、====>ECX=A
                              3、====>ECX=B
                              4、====>ECX=7
                              5、====>ECX=7
                              6、====>ECX=3

:00403941 8A8964F14100            mov cl, byte ptr [ecx+0041F164]
                                 ====>从 [ecx+0041F164] 处查表!
                              1、====>CL=1
                              2、====>CL=1
                              3、====>CL=P
                              4、====>CL=G
                              5、====>CL=G
                              6、====>CL=A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[0041F164]处的表值!


0041F164  4B 33 35 41 37 43 32 47 30 34 31 50 39 36 44 38  K35A7C2G041P96D8

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


:00403947 880A                    mov byte ptr [edx], cl
                                 ====>结果保存 [EDX] 处

:00403949 8B08                    mov ecx, dword ptr [eax]
                            1-1、====>ECX=A4
                            2-2、====>ECX=AA
                            3-3、====>ECX=B7
                            4-4、====>ECX=7E
                            5-5、====>ECX=70
                            6-6、====>ECX=3E

:0040394B 81E10F000080            and ecx, 8000000F
                                 ====>分别和8000000F进行“与”运算!
                            1-1、====>ECX=4
                            2-2、====>ECX=A
                            3-3、====>ECX=7
                            4-4、====>ECX=E
                            5-5、====>ECX=0
                            6-6、====>ECX=E

:00403951 7905                    jns 00403958
:00403953 49                      dec ecx
:00403954 83C9F0                  or ecx, FFFFFFF0
:00403957 41                      inc ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403951(C)
|
:00403958 8A8964F14100            mov cl, byte ptr [ecx+0041F164]
                                 ====>从 [ecx+0041F164] 处查表!
                            1-1、====>CL=7
                            2-2、====>CL=1
                            3-3、====>CL=G
                            4-4、====>CL=D
                            5-5、====>CL=K
                            6-6、====>CL=D

:0040395E 884A01                  mov byte ptr [edx+01], cl
                                 ====>结果保存 [EDX+01] 处

:00403961 43                      inc ebx
:00403962 83C202                  add edx, 00000002
:00403965 83C004                  add eax, 00000004
:00403968 83FB06                  cmp ebx, 00000006
                                 ====>循环6次
:0040396B 7CC8                    jl 00403935
                                 ====>继续循环?

:0040396D 8B4508                  mov eax, dword ptr [ebp+08]
                                 ====>上面循环所得的结果入 EAX
                                 ====>EAX=1711PGGDGKAD  呵呵,这就是真码了!

:00403970 C6400C00                mov [eax+0C], 00

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004038D1(U)
|
:00403974 5F                      pop edi
:00403975 5E                      pop esi
:00403976 5B                      pop ebx
:00403977 8BE5                    mov esp, ebp
:00403979 5D                      pop ebp
:0040397A C3                      ret

—————————————————————————————————
【KeyMake之内存注册机】:


中断地址:404370
中断次数:1
第一字节:E8
指令长度:5

中断地址:403AC5
中断次数:1
第一字节:59
指令长度:1


内存方式:EAX              

—————————————————————————————————
【注册信息保存】:


REGEDIT4

[HKEY_LOCAL_MACHINE\Software\AKoff\Composer]

"UserMail"="fly@263.net"
"KeyCode"="1711PGGDGKAD"

—————————————————————————————————
【整        理】:


Your E-mail: fly@263.net
Your   Code: 1711PGGDGKAD

—————————————————————————————————


   
                   Cracked By 巢水工作坊——fly【OCN】

                              2:58 03-3-7