初學者(7) (4千字)

看雪資料發表於2000-05-05

軟體名稱:AmazimgMIDI 1.60
      軟體大小:839KB
      軟體型別:共享
      適用環境:Win95/98
      軟體介紹:
      可以將您現有的WAV檔案轉換成為MIDI檔案,WAV可能會有人聲或者其它非樂器聲音的部
      分,這個部分可就無能為力了,AmazingMIDI會將這一部分的聲音資料轉換成為類比的訊
      號,不過仍然還是以MIDI的格式儲存,您可以在稍後與MIDI編輯軟體中一起編輯使用。雖
      然AmazingMIDI在轉檔案方面的功能已經相當強大了,不過它還是有所限制的,目前版本
      的AmazingMIDI並無法直接在眾多的樂器聲音中只對某一種取樣,相信這方面的功能限制
      應該很快有所改善的。如果對WAV音樂素材直接取樣使用的話,AmazingMIDI是個絕佳的轉
      換工具。
      軟體來源:<<軟體世界>>第5期
      保護型別:固定註冊碼
      所用工具:S-ICE, W32Dasm
      破解過程:
      在help選單中選擇registration,任意輸入12345678,CTRL+D轉到S-ICE,設斷點bpx hmemcpy,
      返回軟體畫面,點OK.程式被中斷後,按F12 42次(第43次出錯誤畫面)後,按F10若干次,找到
      下面程式
|:00405DEA(U)
|
:00405D5D 8D4C2410                lea ecx, dword ptr [esp+10]
:00405D61 E8C8780100              call 0041D62E
:00405D66 83F801                  cmp eax, 00000001
:00405D69 0F85B6000000            jne 00405E25
:00405D6F 51                      push ecx
:00405D70 8D442470                lea eax, dword ptr [esp+70]
:00405D74 8BCC                    mov ecx, esp
:00405D76 89642410                mov dword ptr [esp+10], esp
:00405D7A 50                      push eax
:00405D7B E887B50100              call 00421307
:00405D80 8D4C240C                lea ecx, dword ptr [esp+0C]
:00405D84 C644247C00              mov [esp+7C], 00
:00405D89 51                      push ecx
:00405D8A E861010000              call 00405EF0
:00405D8F 8BC8                    mov ecx, eax
:00405D91 E8AA180000              call 00407640 <----將輸入碼變形
:00405D96 8B00                    mov eax, dword ptr [eax]

* Possible StringData Ref from Data Obj ->"<<@::5<720"<-----(變形後的)註冊碼
                                  |
:00405D98 BE58054400              mov esi, 00440558

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405DBF(C)
|
:00405D9D 8A10                    mov dl, byte ptr [eax]<-----取出變形後的輸入碼
:00405D9F 8A1E                    mov bl, byte ptr [esi]<-----取出變形後的註冊碼
:00405DA1 8ACA                    mov cl, dl
:00405DA3 3AD3                    cmp dl, bl
:00405DA5 751E                    jne 00405DC5<-----錯誤資訊
:00405DA7 84C9                    test cl, cl
:00405DA9 7416                    je 00405DC1
:00405DAB 8A5001                  mov dl, byte ptr [eax+01]
:00405DAE 8A5E01                  mov bl, byte ptr [esi+01]
:00405DB1 8ACA                    mov cl, dl
:00405DB3 3AD3                    cmp dl, bl
:00405DB5 750E                    jne 00405DC5<-----錯誤資訊
:00405DB7 83C002                  add eax, 00000002
:00405DBA 83C602                  add esi, 00000002
:00405DBD 84C9                    test cl, cl
:00405DBF 75DC                    jne 00405D9D<------未完,繼續比較

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405DA9(C)
|
:00405DC1 33C0                    xor eax, eax<-----比較正確eax清零
:00405DC3 EB05                    jmp 00405DCA

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00405DA5(C), :00405DB5(C)
|
:00405DC5 1BC0                    sbb eax, eax
:00405DC7 83D8FF                  sbb eax, FFFFFFFF<-----比較錯誤eax置位

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405DC3(U)
|
:00405DCA 85C0                    test eax, eax
:00405DCC 8D4C2408                lea ecx, dword ptr [esp+08]
:00405DD0 0F94C3                  sete bl      <-----若eax為零,bl置位
:00405DD3 E8BAB70100              call 00421592
:00405DD8 84DB                    test bl, bl 
:00405DDA 7513                    jne 00405DEF <-----bl不為零,顯示"Thank you for your                                                      registration"
:00405DDC 6AFF                    push FFFFFFFF
:00405DDE 6A00                    push 00000000

* Possible Reference to String Resource ID=61212: "Incomplete or incorrect information."
                                  |
:00405DE0 681CEF0000              push 0000EF1C
:00405DE5 E8DB180200              call 004276C5
:00405DEA E96EFFFFFF              jmp 00405D5D

分析將輸入碼變形的CALL,便可知道程式是如何處理輸入碼的.
處理過程如下:
將輸入碼調頭,將其ASCII碼與序號相加.
那麼我們根據已知的變形後的註冊碼反推出註冊碼

序號          9    8    7    6    5    4    3    2    1    0
變形的註冊碼  <    <    @    :    :    5    <    7    2    0
ASCII碼        3C  3C  40  3A  3A  35  3C  37  32  30
減序號後      33  34  39  34  35  31  39  35  31  30

註冊碼應為: 0159154943

相關文章