給初學者,因為我就是個初學者(2) (1千字)

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

animagic32

介紹:此軟體在<<軟體世界>>光碟中,製作網頁動畫的軟體
開始用bpx hmemcpy中斷然後按F12直到出現錯誤畫面的前一次.
找到CMP [484FC1],00
    jnz *******
直接改此跳轉會出現註冊成功畫面,但選擇About選單或退出重新啟動後
仍有未註冊提示畫面.
追蹤過程中,若修改上面跳轉後,程式執行了WritePrivateProFileStringA
發現是將使用者名稱,公司名,註冊碼寫入到animagic.ini
綜合上面兩點,推測程式啟動時要讀此ini檔案,比較後置[00484FC1]
因此設bpm 484FC1後啟動程式,找到
call ******
mov [00484FC1],al
註冊碼的比較一定在CALL中,在CALL上設中斷,重新啟動程式被中斷後,按F8
進入CALL,裡面還有一個CALL,按F8進入(因為後面沒兩句就ret了)
找到了計算過程(原程式用W32dasm存下的程式太大,此段沒能複製過來)
但其過程如下:
舉例說明:
使用者名稱:Killer
將ANIMAGIC16和使用者名稱的ASCII碼相加
ASCII(ANIMAFIC16)=2A0
ASCII(轉為大寫字母(Killer))=263
相加後等於463
463*463=133E49
133E49*16=1A75A46
1A75A46/7=3C7A9C
3C7A9C*463=94DDA54
94DDA54-21=94DDA33

使用者名稱:Killer
註冊碼:94DDA33

另外此程式還有一個註冊碼:
將GIFOPT32,使用者名稱和公司名的ASCII碼相加
ASCII(ANIMAFIC16)=2A0
ASCII(轉為大寫字母(Killer))=263
ASCII(轉為大寫字母(Home))=129
相加後等於58C
58C*58C=1EC490
1EC490*16=2A4E460
2A4E460/7=60B2E9
60B2E9*58C=1860646C
1860646C-21=1860644B

使用者名稱:Killer
公司名:HOME
註冊碼:94DDA33

程式根據兩個字串ANIMAGIC16和GIFOPT32計算註冊碼
但不知兩個註冊碼有何區別.

相關文章