2017-08-28 3 views
2

アンドロイドアプリの現在のウィンドウ/アクティビティに対してクエリを実行して、window flag FLAG_SECUREを確認するにはどうすればよいですか? ADBや他のコマンドラインツールをAPKに対して使用することは可能ですか?コマンドラインから現在のAPK画面からFLAG_SECUREをクエリする方法はありますか?

私の使用例は次のとおりです。現在の画面でFLAG_SECUREが有効になっているかどうかをデバイスに問い合わせます。私はソースコードにアクセスできないが、私はブラックボックス受け入れテスト担当者としてAPKで働いているだけである。この他の問題は類似しており、無応答であることを

注:このコマンドを実行することにより求めることができるAndroid - Window Flags

+0

私はそれがどこかのadbシェルdumpsys'出力 'であることを想像:これは、あなたが正しいadb shellでそれを確認することができる方法です。それがどこにあるのかを知り、その出力を解析してプログラムで決定すると、雑用になります。 – CommonsWare

+0

@CommonsWare私はあなたのアドバイスを試みましたが、残念ながら、dumpsysの出力全体を通して、FLAG_SECUREとは異なるページと違いはありません。 –

+0

それは驚くべきことです。しかし、その場合、私はあなたが運がないと思う。 – CommonsWare

答えて

1

あなたは、いくつかの特定のウィンドウだけでdumpsys window <window id>出力にmAttrラインをチェックすることにより、設定FLAG_SECUREを持っているかどうかを調べることができます。

~$ dumpsys window com.android.settings | grep ' mAttrs=' 
    mAttrs=WM.LayoutParams{(0,0)(fillxfill) sim=#20 ty=1 fl=#85810100 pfl=0x20000 wanim=0x103046a vsysui=0x700 needsMenuKey=2} 

fl=値は六角でそのウィンドウのWindowManager.LayoutParams().flagsです。 FLAG_SECUREは、値が0x2000のビットマスクです。

for f in $(dumpsys window com.android.settings | grep ' mAttrs=' | grep -o ' fl=#[^ ]*'); do [[ $((16#${f#*#}&8192)) -ne 0 ]] && echo 'FLAG_SECURE is set' || echo 'FLAG_SECURE is not set'; done 
1

任意の安全な層にかかわらず、特定のウィンドウの現在表示されているか否かを:

意志
adb shell "dumpsys SurfaceFlinger | grep -o secureVis=. | cut -d= -f2" 

には0の値を返します。または1の場合、の一部のセキュアなレイヤーはと表示されます。

isSecureは、より適切な値のように見えるかもしれませんが、そうではありません。何らかの理由で常に1と表示され、おそらくデバイスが一般的に安全なページをサポートしているとだけ言います。

+1

SecureLayerの可視性フラグは、SurfaceFlingerのdumpsys出力から削除されました。https://android.googlesource.com/platform/frameworks/native/+/b5b3563%5E!/ –

関連する問題