FlashPlayer に対応した動画プレイヤーでフラッシュを再生したときに出る謎の画像について その3
解析してみました。
どうやら、FlashのDLL内部で 1回目と5回目に呼ばれた GetSystemTime をフックしてやれば回避できるみたいなのですが、コードが複雑になるので、ホワイトリスト関数をいじって全て許可するようにしてみました。
SUB_L102E9B60: push ebp mov ebp,esp sub esp,0000000Ch push esi mov esi,ecx lea ecx,[esi+00000B44h] call SUB_L103109EB test al,al jnz L102E9CE1 mov ecx,[esi+20h] push ebx mov ebx,[ebp+08h] push ebx push esi call SUB_L101C2A2A test al,al jz L102E9B9E ; ブロックするか判定処理 push ebx mov ecx,esi call SUB_L102E9530 // https://www.macromedia.com/support/flashplayer/sys/ 表示処理 pop ebx pop esi mov esp,ebp pop ebp retn 0014h ;------------------------------------------------------------------------------ L102E9B9E: push edi push [ebp+14h] lea edi,[esi+000005C0h] mov byte ptr [esi+00000259h],00h push [ebp+0Ch] mov ecx,edi push ebx call SUB_L10314935 mov dword ptr [esi+0000088Ch],07FFFFFFh mov dword ptr [esi+00000888h],07FFFFFFh mov dword ptr [esi+00000884h],07FFFFFFh mov dword ptr [esi+00000880h],07FFFFFFh mov eax,[edi] : SUB_L101C2A2A: |
x64版も似たような感じ。x64版でも short Jump や セグメント内コールの場合は x86とコード同じなのね・ω・
30394930 mov rsi, rdx 30394933 call sub_303C5B38 30394938 test al, al 3039493A jnz loc_30394B5C 30394940 mov rcx, [rbx+40h] 30394944 mov r8, rsi 30394947 mov rdx, rbx 3039494A call sub_3023441C 3039494F mov rdx, rsi 30394952 test al, al 30394954 jz short loc_30394963; ブロックするか判定処理 30394956 mov rcx, rbx 30394959 call loc_30394070 3039495E jmp loc_30394B5C 30394963 ; --------------------------------------------------------------------------- 30394963 30394963 loc_30394963: ; CODE XREF: sub_30394910+44 30394963 movzx r9d, [rsp+0A8h+arg_20] 3039496C mov r8d, ebp 3039496F mov [rsp+0A8h+arg_8], rdi 30394977 lea rdi, [rbx+8C0h] 3039497E mov rcx, rdi 30394981 mov byte ptr [rbx+3F1h], 0 30394988 call sub_303CA694 3039498D mov dword ptr [rbx+0D8Ch], 7FFFFFFh 30394997 mov dword ptr [rbx+0D88h], 7FFFFFFh |
Comments