<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【ASeeker】Android 源碼撈針,服務(wù)接口掃描神器

      ASeeker是一個Android源碼應(yīng)用系統(tǒng)服務(wù)接口掃描工具。

      項目已開源:

      ? Github ? 

      如果您也喜歡 ASeeker,別忘了給我們點(diǎn)個星。

      說明

      ASeeker 項目是我們在做虛擬化分身產(chǎn)品( 『 空殼 』 )過程中的內(nèi)部開發(fā)工具,目的是為了提升Android系統(tǒng)各版本適配效率。由于產(chǎn)品需支持 Android 9.x ~ Android 14.x,需在應(yīng)用訪問所有的系統(tǒng)服務(wù)接口時,將我們關(guān)心的參數(shù)進(jìn)行修正和還原。

      這導(dǎo)致每個系統(tǒng)版本適配的工作量巨大,且很容易遺漏。因此我們開發(fā)了這個源碼接口掃描工具,可以快速從Android源碼中搜索我們需要的AIDL接口和服務(wù),并安裝定制的格式輸出。

      感謝開源項目com.github.javaparser,因為它的存在才讓ASeeker成為可能,這也是我們開源ASeeker的動力。

      ASeeker的特點(diǎn):

      • 完整源碼AIDL接口掃描。
      • 支持多目錄關(guān)聯(lián)遞歸類型查找識別。
      • 支持泛型類,內(nèi)部類和繼承類遞歸查找。
      • 支持匹配配置名單。
      • 支持Android代碼語言規(guī)范格式化。
      • 支持查找結(jié)果的定制輸出。

      如何使用

      # 確保 asseker.jar 和 res 在同一目錄下
      # aseeker [-options]
      #   -p [SDK version code] [source code path]
      $ java -jar aseeker.jar -p 33 /Users/abc/android_13.0_r13
      

      輸出結(jié)果目錄:(包含掃描結(jié)果和執(zhí)行過程日志)

      輸出文件內(nèi)容:(可自定義輸出內(nèi)容格式)

      package android.app.os.service;
      
      import android.app.os.base.ProxyServiceBase;
      
      // source code: /frameworks/base/core/java/android/view/accessibility/IAccessibilityInteractionConnectionCallback.aidl
      public class IAccessibilityInteractionConnectionCallback extends ProxyServiceBase {
      
          // 10.0 void setFindAccessibilityNodeInfoResult(AccessibilityNodeInfo info, int interactionId);// argument: AccessibilityNodeInfo:info -> CharSequence::mPackageName
          public static final String sMethod_setFindAccessibilityNodeInfoResult = "setFindAccessibilityNodeInfoResult";
          // 10.0 void setFindAccessibilityNodeInfosResult(List<AccessibilityNodeInfo> infos, int interactionId);// argument: List<AccessibilityNodeInfo>:infos -> CharSequence::mPackageName
          public static final String sMethod_setFindAccessibilityNodeInfosResult = "setFindAccessibilityNodeInfosResult";
      
      }
      

      功能實(shí)現(xiàn)

      需求

      為了實(shí)現(xiàn)應(yīng)用虛擬化,我們需要將應(yīng)用與系統(tǒng)服務(wù)接口通信中包含包名,路徑的參數(shù),函數(shù)名和返回值的接口進(jìn)行適配。在訪問之前需要修正為安裝應(yīng)用的信息,訪問結(jié)果需要還原為原應(yīng)用的信息。

      因此,我們需要:

      1. 遞歸查找參數(shù)中包含類型為String的名字含包名的接口,如:packagepkg等。

        void func(String pkg);
        void func(ComponentName cn);// 因為ComponentName中有成員:mPackageName
        
      2. 遞歸查找返回值中包含類型為String的名字含包名的接口,如:packagepkg等。

        ComponentName getComponentName();
        
      3. 查找返回值為String但是函數(shù)名包含包名的接口。

        String getPackageName();
        
      4. 打印輸出找到的具體路徑。

            // 11.0 boolean enterPictureInPictureMode(IBinder token, PictureInPictureParams params);// argument: PictureInPictureParams:params -> List<RemoteAction>::mUserActions -> PendingIntent::mActionIntent
            public static final String sMethod_enterPictureInPictureMode = "enterPictureInPictureMode";
        

      文件預(yù)處理

      由于javaparser只支持基礎(chǔ)的Java類語言規(guī)范,對于Android平臺定制標(biāo)簽,關(guān)鍵字等不支持,所以需要對目標(biāo)文件先進(jìn)行格式化處理,去除這些屬性。

      // @from: com.ifms.cmpt.aseeker.AidlFormator.java
      
      Pattern.compile("(?<![\\w])IN\\s+([a-zA-Z_])"),
      Pattern.compile("(?<![\\w])in\\s+([a-zA-Z_])"),
      Pattern.compile("(?<![\\w])OUT\\s+([a-zA-Z_])"),
      Pattern.compile("(?<![\\w])out\\s+([a-zA-Z_])"),
      Pattern.compile("(?<![\\w])INOUT\\s+([a-zA-Z_])"),
      Pattern.compile("(?<![\\w])inout\\s+([a-zA-Z_])"),
      
      private static final String PATTERN_AT = "@\\w[\\w.]*\\s*(\\([^)]*\\))?"; // rm @Nullable, @android.app.XXX(xxx)
      private static final String PATTERN_ABSTRACT = "\\)\\s*=\\s*\\d+\\s*;$";// rm ") = ${number};"
      private static final String PATTERN_BRIEF = "/\\*.*?\\*/";// rm "/*xxx*/"
      private static final String ONEWAY = "oneway ";
      private static final String PARCELABLE = "parcelable ";
      private static final String UNION = "union ";
      

      類查找

      為了可以準(zhǔn)確識別類型,需要完整的查找到參數(shù)類型。

      1. 當(dāng)前同目錄下查找。
      2. 當(dāng)前同工程目錄下查找。
      3. framework/base目錄下查找。
      4. Android SDK目錄下查找(可在config.txt中配置ANDROID_HOME路徑)。

      個性化配置

      1. 全局配置: config.txt

      # 配置Android SDK源碼路徑
      ANDROID_HOME=C:\Users\Administrator\AppData\Local\Android\Sdk
      # 配置最大遞歸訪問深度,提升效率
      MAX_LEVEL=4
      

      2. 忽略類型: ignore.txt

      byte
      short
      int
      long
      char
      float
      double
      void
      boolean
      

      3. 忽略文件: ignore-file.txt

      忽略明確不需要關(guān)注的接口類,這樣不會出現(xiàn)在結(jié)果中。

      # 系統(tǒng)服務(wù)使用
      RemoteServiceCallback.aidl
      
      # 系統(tǒng)WiFi管理模塊,需要系統(tǒng)權(quán)限
      IWifiScanner.aidl
      

      4. 匹配類型: match.txt

      ApplicationInfo
      ComponentName
      PackageInfo
      ActivityInfo
      ServiceInfo
      ProviderInfo
      

      5. 文件映射: mapping.txt

      可以定制輸出結(jié)果文件名。

      # rename out file
      # ${Android source file}=${target file}
      # such as:
      IActivityManager=IAMS
      

      6. 輸出模板: template.java

      定制輸出模板可以更好的和我們工程的代碼融合,易于代碼和結(jié)果對比。

      package android.app.os.service;
      
      import android.app.os.base.ProxyServiceBase;
      
      @templateFile@
      public class @templateClass@ extends ProxyServiceBase {
      
          @templateMethod@
      
      }
      
      posted @ 2024-06-20 12:57  iofomo  閱讀(419)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产中文字幕一区二区| 国产男女猛烈无遮挡免费视频网址| 日韩午夜福利视频在线观看| 国产精品中文字幕综合| 午夜福利片1000无码免费| 国产精品av中文字幕| 红桃视频成人传媒| 国产色悠悠在线免费观看| 日韩乱码人妻无码中文字幕视频| 微山县| 久久综合开心激情五月天| 亚洲精品天天影视综合网| 亚洲欧美日韩成人综合一区| 香蕉久久夜色精品国产成人| yw尤物av无码国产在线观看| 精品视频在线观看免费观看| 日韩av在线一卡二卡三卡| a片免费视频在线观看| 自拍偷自拍亚洲一区二区| 国内少妇偷人精品免费| 婷婷久久综合九色综合88| 亚洲欧美激情在线一区| 国产初高中生在线视频| 国产在线播放专区av| 亚洲中文字幕乱码一区| 国产午夜成人久久无码一区二区 | 爱性久久久久久久久| 亚洲成在人线在线播放无码| 国产精品国产亚洲区久久| 国产亚洲精品在av| 成在线人永久免费视频播放| 一区二区三区四区黄色网| 免费视频爱爱太爽了| 国产超碰人人爽人人做人人添| 成人做受120秒试看试看视频| 日本www一道久久久免费| 国产精品黄色精品黄色大片 | 性色欲情网站iwww九文堂| 潮喷失禁大喷水无码| 伊人久久大香线蕉综合观| 亚洲中文字幕国产精品|