安卓逆向-安卓基礎-app界面控件的查看


查看界面控件的作用

  • 原生方式開發的app,使用Java和C++開發,加密用的是Java和C++
  • H5的app,使用Webview控件加載網頁,加密用的是JS
  • app自動化測試,需要知道控件的id,或者說需要定位到控件

使用uiautomatorviewer.bat查看

Android SDK根目錄\tools\bin
注意:如果關閉打開的cmd窗口,UI Automator Viewer窗口也就關閉了
image
這時你手機的頁面便會顯示出來
image

使用Appium查看

  • Appium的下載和安裝
  • Appium的配置
    • 安裝Java SDK
    • 配置android SDK
    • 設置ANDROID_HOME環境變量
      image
  • Appium的啟動參數
    視頻中用的是appium 1.22以下的版本,截止我寫這篇文章,最新版為1.22.2,服務和元素查看器分家了,查看元素信息就必須下載Appium Inspector。我選擇下載1.21.2,也就是分家前的最后一個版本。
    點擊start server
    image
    點擊“放大鏡”
    image
    比如我查看手機的設置app 的控件信息,需要輸入這些信息
    image
    設置完成之后點擊保存,然后點擊右下角的start session
其中的deviceName的獲得

image

我使用的是k30pro,比教學視頻中已經root的pixel1代坑多一些
主要出現的問題就是"orginal error:error executing adbexec appium",關於這個問題的解決建議看這一篇:appium啟動start session報錯記錄Error executing adbExec
而對於小米手機,在開發者選項中一定要開啟這些開關:

  • OEM解鎖
  • USB調試
  • USB安裝
  • USB調試(安全設置)
    在接下來的過程中,手機上會不斷彈窗(下次使用就不會彈了),點擊允許即可,手機上會多出一個app
    image
    成功!
    image

這時候手機上點擊設置的其他頁面,再點擊appium中的刷新,也是可以截屏的
image

點擊其他應用,點擊appium中的刷新按鈕,依然可以截屏(感覺有點嚇人啊,就像一個木馬)
給足雞老師排面
image

禁止截屏

activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
在我們的app中添加上面這句話
image
重新安裝這個app,打開app,這時候通過appium已經無法截取此app里面的頁面

使用sdk中的工具同樣也無法對這個app頁面截圖
image

上面這行代碼可以以三種形式表現:

  • 直接明寫在代碼中,就像我上面那個app一樣
  • 利用JAVA反射
  • SO層,對函數名類名進行加密

無論哪一種,hook通殺,hook掉getWindow()下的addFlag()方法。

也可以調用clearFlag()方法來消除上面那行代碼的作用,不過就需要考慮一個時機問題。需要先addFlag,再clearFlag
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM