2010年01月05日

HDCP解除について(1)

私はDELL 3008WFPというモニターを利用しているのですが
これは最大解像度時にHDCPが効かない、すなわち地デジが視聴できないという悲惨な仕様です。
3008WFPを買った時には地デジなんか見ないからいいやと思っていましたが、やはり慾は出てくるもので
なんとかしようと思ったしだいです。
普通ならばPT2を買うか新しいモニターを買うか2択ですが、それでは面白くないということで
市販の地デジチューナーを買って意地でも表示させてみましょう。

とりあえず新製品っぽいGV-MVP/HZ3を買ってきましたので、これで試してみます。

ちなみにチェックソフトの結果はこんな感じ
pic1



まず、HDCP対応なのかどうかをチェックする部分を特定します。
チェック方法は製品でも地デジチェッカー(mtvChecker_h3.exe)でも同じだと思われるので
プログラム規模が小さい地デジチェッカーを解析してみます。

使うツールはOllyDbg+OllyHelperのみ、必要な情報はググる方向で・・・

なにも考えずOllyでmtvChecker_h3.exeをrunするとDebugログが出ているようです。
これは良い解析の足がかりになります。
解析に使うmtvChecker_h3.exeはVer3.2.0.0です。

HDCP失敗時のログ
pic2





HDCP成功時のログ
pic3





違いがわかりますでしょうか?
成功時と同じログが出るようにする方法を解析すれば行けそうなきがしますね。

でもってログを元にトレースしますと
1個目のチェックは
0040D2A4           |. 52             PUSH EDX                                         ; /Arg5
0040D2A5           |. 894424 40      MOV DWORD PTR SS:[ESP+40],EAX                          ; |
0040D2A9           |. 894C24 2C      MOV DWORD PTR SS:[ESP+2C],ECX                          ; |
0040D2AD           |. 8D4424 14      LEA EAX,DWORD PTR SS:[ESP+14]                          ; |
0040D2B1           |. 50             PUSH EAX                                               ; |Arg4
0040D2B2           |. 894C24 34      MOV DWORD PTR SS:[ESP+34],ECX                          ; |
0040D2B6           |. 6A 04          PUSH 4                                                 ; |Arg3 = 00000004
0040D2B8           |. 8D4C24 14      LEA ECX,DWORD PTR SS:[ESP+14]                          ; |
0040D2BC           |. 51             PUSH ECX                                               ; |Arg2
0040D2BD           |. 8D5424 40      LEA EDX,DWORD PTR SS:[ESP+40]                          ; |
0040D2C1           |. 52             PUSH EDX                                               ; |Arg1
0040D2C2           |. C74424 1C 0100>MOV DWORD PTR SS:[ESP+1C],1                            ; |
0040D2CA           |. C74424 24 0000>MOV DWORD PTR SS:[ESP+24],0                            ; |
0040D2D2           |. C74424 20 2000>MOV DWORD PTR SS:[ESP+20],20                           ; |
0040D2DA           |. E8 01F3FFFF    CALL mtvCheck.0040C5E0                                 ; HDCPチェック1
0040D2DF           |. 83C4 14        ADD ESP,14
0040D2E2           |. 85C0           TEST EAX,EAX
0040D2E4           |. 7C 51          JL SHORT mtvCheck.0040D337
0040D2E6           |. 8B4424 24      MOV EAX,DWORD PTR SS:[ESP+24]  ;  [ESP+24]の値が1であるならHDCPが有効
0040D2EA           |. 50             PUSH EAX
0040D2EB           |. 68 B40F4400    PUSH mtvCheck.00440FB4
0040D2F0           |. E8 1BEDFFFF    CALL mtvCheck.0040C010
0040D2F5           |. 8B4424 2C      MOV EAX,DWORD PTR SS:[ESP+2C]
0040D2F9           |. 83C4 08        ADD ESP,8
0040D2FC           |. 83E8 00        SUB EAX,0                                              ;  Switch (cases 0..1)
0040D2FF           |. 74 0A          JE SHORT mtvCheck.0040D30B
0040D301           |. 48             DEC EAX
0040D302           |. 75 14          JNZ SHORT mtvCheck.0040D318
0040D304           |. 68 7C0D4400    PUSH mtvCheck.00440D7C ;  ASCII "COPP_HDCP_Level1"; Case 1 of switch 0040D2FC
0040D309           |. EB 05          JMP SHORT mtvCheck.0040D310
0040D30B           |> 68 680D4400    PUSH mtvCheck.00440D68 ;  ASCII "COPP_HDCP_Level0"; Case 0 of switch 0040D2FC
0040D310           |> E8 FBECFFFF    CALL mtvCheck.0040C010

2個目のチェックは
0040D194           |. 52             PUSH EDX                                               ; /Arg5
0040D195           |. 894424 40      MOV DWORD PTR SS:[ESP+40],EAX                          ; |
0040D199           |. 894C24 2C      MOV DWORD PTR SS:[ESP+2C],ECX                          ; |
0040D19D           |. 8D4424 14      LEA EAX,DWORD PTR SS:[ESP+14]                          ; |
0040D1A1           |. 50             PUSH EAX                                               ; |Arg4
0040D1A2           |. 894C24 34      MOV DWORD PTR SS:[ESP+34],ECX                          ; |
0040D1A6           |. 6A 04          PUSH 4                                                 ; |Arg3 = 00000004
0040D1A8           |. 8D4C24 14      LEA ECX,DWORD PTR SS:[ESP+14]                          ; |
0040D1AC           |. 51             PUSH ECX                                               ; |Arg2
0040D1AD           |. 8D5424 40      LEA EDX,DWORD PTR SS:[ESP+40]                          ; |
0040D1B1           |. 52             PUSH EDX                                               ; |Arg1
0040D1B2           |. C74424 1C 0100>MOV DWORD PTR SS:[ESP+1C],1                            ; |
0040D1BA           |. C74424 24 0000>MOV DWORD PTR SS:[ESP+24],0                            ; |
0040D1C2           |. C74424 20 2000>MOV DWORD PTR SS:[ESP+20],20                           ; |
0040D1CA           |. E8 11F4FFFF    CALL mtvCheck.0040C5E0                                 ; HDCPチェック2
0040D1CF           |. 83C4 14        ADD ESP,14
0040D1D2           |. 85C0           TEST EAX,EAX
0040D1D4           |. 7C 51          JL SHORT mtvCheck.0040D227
0040D1D6           |. 8B4424 24      MOV EAX,DWORD PTR SS:[ESP+24]                ;  [ESP+24]の値が1であるならHDCPが有効
0040D1DA           |. 50             PUSH EAX
0040D1DB           |. 68 840F4400    PUSH mtvCheck.00440F84
0040D1E0           |. E8 2BEEFFFF    CALL mtvCheck.0040C010
0040D1E5           |. 8B4424 2C      MOV EAX,DWORD PTR SS:[ESP+2C]
0040D1E9           |. 83C4 08        ADD ESP,8
0040D1EC           |. 83E8 00        SUB EAX,0                             ;  Switch (cases 0..1)
0040D1EF           |. 74 0A          JE SHORT mtvCheck.0040D1FB
0040D1F1           |. 48             DEC EAX
0040D1F2           |. 75 14          JNZ SHORT mtvCheck.0040D208
0040D1F4           |. 68 7C0D4400    PUSH mtvCheck.00440D7C ;  ASCII "COPP_HDCP_Level1"; Case 1 of switch 0040D1EC
0040D1F9           |. EB 05          JMP SHORT mtvCheck.0040D200
0040D1FB           |> 68 680D4400    PUSH mtvCheck.00440D68  ;  ASCII "COPP_HDCP_Level0"; Case 0 of switch 0040D1EC
0040D200           |> E8 0BEEFFFF    CALL mtvCheck.0040C010

となります。
チェックルーチンCALL mtvCheck.0040C5E0 の中身の解析は次回


unvirus at 22:57│Comments(0)TrackBack(0)解析 

トラックバックURL

コメントする

このブログにコメントするにはログインが必要です。