System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請實施例涉及計算機,特別涉及一種函數處理方法、裝置、設備及存儲介質。
技術介紹
1、開發人員可以通過函數攔截技術,攔截應用程序對某些函數的調用行為。
2、在相關技術中,開發人員可以通過插樁方式,在應用程序或函數的源代碼或字節碼中插入額外的邏輯代碼,以便在應用程序調用函數時,對該函數調用行為進行攔截。
3、然而,插樁方式增加了應用程序或函數中代碼的復雜性,因此,相關技術中的函數攔截技術有一定的局限性。
技術實現思路
1、本申請實施例提供了一種函數處理方法、裝置、設備及存儲介質。本申請實施例提供的技術方案如下:
2、根據本申請實施例的一個方面,提供了一種函數處理方法,所述方法包括:
3、通過java層發送攔截請求,所述攔截請求用于指示第一函數和第二函數;所述第一函數為函數攔截的被攔截方,所述第二函數為函數攔截的攔截方;
4、通過操作系統底層接收所述攔截請求;
5、通過所述操作系統底層,將所述第一函數的函數指針修改為第一函數指針,所述第一函數指針指向所述第二函數,以便所述第二函數攔截對所述第一函數的調用請求。
6、根據本申請一個實施例提供的一個方面,提供了一種函數處理裝置,所述裝置包括:
7、發送模塊,用于通過java層發送攔截請求,所述攔截請求用于指示第一函數和第二函數;所述第一函數為函數攔截的被攔截方,所述第二函數為函數攔截的攔截方;
8、接收模塊,用于通過操作系統底層接收
9、修改模塊,用于通過所述操作系統底層,將所述第一函數的函數指針修改為第一函數指針,所述第一函數指針指向所述第二函數,以便所述第二函數攔截對所述第一函數的調用請求。
10、在一些實施例中,所述裝置還包括:
11、請求轉發模塊,用于通過所述操作系統底層,在接收到對所述第一函數的所述調用請求的情況下,根據所述第一函數指針,將所述調用請求轉發給所述第二函數;
12、執行模塊,用于通過所述第二函數執行對所述調用請求的攔截邏輯。
13、在一些實施例中,所述攔截邏輯包括以下邏輯中的一項或多項:
14、監控函數調用、修改函數行為、記錄函數調用信息、報告異常調用。
15、在一些實施例中,所述修改模塊,用于通過所述操作系統底層,查詢所述第一函數的元數據,將所述第一函數的元數據中的函數指針修改為所述第一函數指針;或者,
16、所述修改模塊,用于通過所述操作系統底層,以鉤子hook方式將所述第一函數的函數指針修改為所述第一函數指針。
17、在一些實施例中,所述裝置還包括:
18、建立模塊,用于通過所述操作系統底層,根據所述攔截請求建立所述第一函數與第二函數之間的映射關系;
19、參數轉發模塊,用于通過所述操作系統底層,在接收到對所述第一函數的所述調用請求的情況下,根據所述第一函數與所述第二函數之間的映射關系,將所述調用請求對應的調用參數轉發給所述第二函數。
20、在一些實施例中,所述攔截請求中包含所述第一函數的函數信息以及所述第二函數的函數信息;
21、所述建立模塊,用于通過所述操作系統底層,建立所述第一函數的函數信息與所述第二函數的函數信息之間的映射關系。
22、在一些實施例中,所述建立模塊,用于通過所述操作系統底層調用注冊函數,將所述第一函數的函數信息與所述第二函數的函數信息之間的映射關系,寫入所述操作系統底層中的映射表。
23、在一些實施例中,所述發送模塊,用于通過在所述java層中運行的所述第二函數發送所述攔截請求;
24、所述接收模塊,用于通過所述操作系統底層,接收在所述java層中運行的所述第二函數發送的所述攔截請求。
25、在一些實施例中,所述發送模塊,用于通過在所述java層中運行的所述第二函數,向所述操作系統底層的指定應用程序編程接口api發送所述攔截請求;
26、所述接收模塊,用于通過所述操作系統底層,接收所述第二函數向所述指定api發送的所述攔截請求。
27、根據本申請實施例的一個方面,提供了一種計算機設備,所述計算機設備包括處理器和存儲器,所述存儲器中存儲有計算機程序,所述計算機程序由所述處理器加載并執行以實現上述函數處理方法。
28、根據本申請實施例的一個方面,提供了一種計算機可讀存儲介質,所述可讀存儲介質中存儲有計算機程序,所述計算機程序由處理器加載并執行以實現上述函數處理方法。
29、根據本申請實施例的一個方面,提供了一種計算機程序產品,所述計算機程序產品包括計算機程序,所述計算機程序由處理器加載并執行以實現上述函數處理方法。
30、本申請實施例提供的技術方案至少包括如下有益效果:
31、在函數攔截的應用場景下,java層可以向操作系統底層發送對指定函數的攔截請求;相應地,操作系統底層可以將指定函數的指針指向一個新函數,開發人員可以預先在新函數中定義對第一函數的攔截邏輯;當接收到應用程序對指定函數的調用請求時,可以執行新函數對應的攔截邏輯;因此,通過操作系統底層修改函數指針的方式,本方案可以在不增加應用程序或被攔截的函數的原始代碼的復雜性的情況下,實現對任意函數的攔截,從而擴展了函數攔截的適用范圍和場景。
本文檔來自技高網...【技術保護點】
1.一種函數處理方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述方法還包括:
3.根據權利要求2所述的方法,其特征在于,所述攔截邏輯包括以下邏輯中的一項或多項:
4.根據權利要求1至3任一所述的方法,其特征在于,所述通過所述操作系統底層,將所述第一函數的函數指針修改為第一函數指針,包括:
5.根據權利要求1至3任一所述的方法,其特征在于,所述方法還包括:
6.根據權利要求5所述的方法,其特征在于,所述攔截請求中包含所述第一函數的函數信息以及所述第二函數的函數信息;
7.根據權利要求6所述的方法,其特征在于,所述通過所述操作系統底層,建立所述第一函數的函數信息與所述第二函數的函數信息之間的映射關系,包括:
8.根據權利要求1至3任一所述的方法,其特征在于,所述通過Java層發送攔截請求,包括:
9.根據權利要求8所述的方法,其特征在于,所述通過在所述Java層中運行的所述第二函數發送所述攔截請求,包括:
10.一種函數處理裝置,其特征在于,所述
11.根據權利要求10所述的裝置,其特征在于,所述裝置還包括:
12.根據權利要求11所述的裝置,其特征在于,所述攔截邏輯包括以下邏輯中的一項或多項:
13.根據權利要求10至12任一所述的裝置,其特征在于,所述修改模塊,用于通過所述操作系統底層,查詢所述第一函數的元數據,將所述第一函數的元數據中的函數指針修改為所述第一函數指針;或者,
14.根據權利要求10至12任一所述的裝置,其特征在于,所述裝置還包括:
15.根據權利要求14所述的裝置,其特征在于,所述攔截請求中包含所述第一函數的函數信息以及所述第二函數的函數信息;
16.根據權利要求15所述的裝置,其特征在于,所述建立模塊,用于通過所述操作系統底層調用注冊函數,將所述第一函數的函數信息與所述第二函數的函數信息之間的映射關系,寫入所述操作系統底層中的映射表。
17.根據權利要求16所述的裝置,其特征在于,所述發送模塊,用于通過在所述Java層中運行的所述第二函數發送所述攔截請求;
18.根據權利要求17所述的裝置,其特征在于,所述發送模塊,用于通過在所述Java層中運行的所述第二函數,向所述操作系統底層的指定應用程序編程接口API發送所述攔截請求;
19.一種計算機設備,其特征在于,所述計算機設備包括處理器和存儲器,所述存儲器中存儲有計算機程序,所述計算機程序由所述處理器加載并執行以實現如權利要求1至9任一項所述的方法。
20.一種計算機可讀存儲介質,其特征在于,所述存儲介質中存儲有計算機程序,所述計算機程序用于被處理器執行,以實現如權利要求1至9任一項所述的方法。
21.一種計算機程序產品,其特征在于,所述計算機程序產品包括計算機程序,所述計算機程序由處理器加載并執行以實現如權利要求1至9任一項所述的方法。
...【技術特征摘要】
1.一種函數處理方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述方法還包括:
3.根據權利要求2所述的方法,其特征在于,所述攔截邏輯包括以下邏輯中的一項或多項:
4.根據權利要求1至3任一所述的方法,其特征在于,所述通過所述操作系統底層,將所述第一函數的函數指針修改為第一函數指針,包括:
5.根據權利要求1至3任一所述的方法,其特征在于,所述方法還包括:
6.根據權利要求5所述的方法,其特征在于,所述攔截請求中包含所述第一函數的函數信息以及所述第二函數的函數信息;
7.根據權利要求6所述的方法,其特征在于,所述通過所述操作系統底層,建立所述第一函數的函數信息與所述第二函數的函數信息之間的映射關系,包括:
8.根據權利要求1至3任一所述的方法,其特征在于,所述通過java層發送攔截請求,包括:
9.根據權利要求8所述的方法,其特征在于,所述通過在所述java層中運行的所述第二函數發送所述攔截請求,包括:
10.一種函數處理裝置,其特征在于,所述裝置包括:
11.根據權利要求10所述的裝置,其特征在于,所述裝置還包括:
12.根據權利要求11所述的裝置,其特征在于,所述攔截邏輯包括以下邏輯中的一項或多項:
13.根據權利要求10至12任一所述的裝置,其特征在于,所述修改模塊,用于通過所述操作系統底層,查詢所述第一函數的元數據...
【專利技術屬性】
技術研發人員:蔡超,馬鵬,
申請(專利權)人:廣州繁星互娛信息科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。