申請加入BCG的第四篇破文--Flash5匯入保護SWF動畫的補丁製作 (3千字)

看雪資料發表於2001-10-29

Flash5匯入保護SWF動畫的補丁製作


作者:maomao
軟體:Flash5
      網上動畫標準制作軟體
下載:略
工具:Trw2000 v1.23
日期:2001-10-29

說明:現在很多人喜歡保護自己的Flash作品,但這種保護相當脆弱,現在網上流行的許多Flash破解工具,下載後破解即可。但總覺得不是“治本”的辦法,而且太麻煩,萬一在緊急的情況下找不到這些小小的工具,豈不是要讓大俠丟了臉面?本人不幸就遇到一次,不過,嘿嘿,我另有高招~~~拿Flash.exe主檔案開刀!

過程如下:
    分別執行TRW2000和Flash5,按CTRL+N啟用TRW2000,輸入bpx messageboxa,F5返回Flash,在Flash選單中選擇“File->import...”引入加殼SWF動畫,立即被TRW攔截,下bd *,pmodule後,Flash會彈出一說明框(告訴你無法引入此動畫),不要理它,按“OK”後又被TRW攔截,這時已經到了Flash領空:
0177:008E9564 FF15580DA300    CALL    `USER32!MessageBoxA`
0177:008E956A 8BF8            MOV      EDI,EAX              <=====游標停在這一行
0177:008E956C 892B            MOV      [EBX],EBP
    一直按住F10,經過大約3個RET,直到來到這裡:

0177:0064E510  PUSH    EAX
0177:0064E511  CALL    004126D9
0177:0064E516  CMP      [EBP+FFFFFB00],EBX
0177:0064E51C  JG      0064E4E9
0177:0064E51E  CMP      DWORD [EBP+FFFFFBC8],BYTE +00
0177:0064E525  JZ      NEAR 0064E600
0177:0064E52B  CMP      DWORD [EBP+FFFFFBCC],BYTE +00
0177:0064E532  JNZ      0064E573
0177:0064E534  CMP      DWORD [009E4A78],BYTE +00
0177:0064E53B  JNZ      0064E54B
0177:0064E53D  PUSH    BYTE -01
0177:0064E53F  PUSH    BYTE +10
0177:0064E541  PUSH    DWORD 025A
0177:0064E546  CALL    007723CC          <=====這就是那個出錯的call
0177:0064E54B  MOV      BYTE [EBP-04],02  <=====游標停在這一行
0177:0064E54F  CALL    0064E78C
0177:0064E554  MOV      BYTE [EBP-04],00
0177:0064E558  CALL    0064E797
0177:0064E55D  MOV      DWORD [EBP-04],FFFFFFFF <=====被賦成這個值就玩完了!
0177:0064E564  CALL    0064E7B1

    再往上看看,哪裡可以繞過出錯的call和玩完的賦值?關鍵在這幾個跳轉上:

0177:0064E51E  CMP      DWORD [EBP+FFFFFBC8],BYTE +00
0177:0064E525  JZ      NEAR 0064E600              <=====值得懷疑
0177:0064E52B  CMP      DWORD [EBP+FFFFFBCC],BYTE +00
0177:0064E532  JNZ      0064E573                  <=====也值得懷疑
0177:0064E534  CMP      DWORD [009E4A78],BYTE +00
0177:0064E53B  JNZ      0064E54B                  <=====這個跳到over上
    兩個值得懷疑的跳轉上都有標誌比較,用F9在0177:0064E532  JNZ 0064E573 設斷點,執行,重新匯入受保護的SWF,果然在這一行打往,並且不跳。下命令r fl z後,用F5執行程式,警告框不見了!但新出來一個密碼輸入框!!!好傢伙,還有一手。
    現在在第一個懷疑點0177:0064E525  JZ NEAR 0064E600設斷,按F5,再用Flash匯入入受保護的SWF,中斷後,發現也不跳!用r fl z 修改ZF標誌位,再F5執行,嘿嘿嘿嘿,不要密碼成功匯入了那個該死的SWF!!!看來,只要修改這個jz就萬事大吉了。
    原來  [EBP+FFFFFBC8]放置檔案匯入保護標誌,0表示沒有保護;[EBP+FFFFFBCC]放置密碼保護標誌,如果上面的標誌為0,則不比較密碼!

整理一下:
  用Ultraedit查詢:  83 BD C8 F8 FF FF 00 0F 84 D5 00 00 00 ( CMP DWORD [EBP+FFFFFBC8],BYTE+00
                                                            JZ      NEAR 0064E600)

            改為: 83 BD C8 F8 FF FF 00 E9 D6 00 00 00 90  (CMP DWORD [EBP+FFFFFBC8],BYTE+00
                                    Jmp      0064E600)


    大功告成,下次再也不用去找什麼flash破解工具了!
    收工~~~~~~

相關文章