精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

另一種繞過 Android P以上非公開API限制的辦法

移動開發(fā) Android
去年發(fā)布的 Android P上引入了針對非公開API的限制,對開發(fā)者來說,這絕對是有史以來最重大的變化之一。前天 Google 發(fā)布了 Android Q 的 Beta 版,越來越多的 API 被加入了黑名單,而且 Google 要求下半年 APP 必須 target 28,這意味著現(xiàn)在的深灰名單也會生效。

去年發(fā)布的 Android P上引入了針對非公開API的限制,對開發(fā)者來說,這絕對是有史以來最重大的變化之一。前天 Google 發(fā)布了 Android Q 的 Beta 版,越來越多的 API 被加入了黑名單,而且 Google 要求下半年 APP 必須 target 28,這意味著現(xiàn)在的深灰名單也會生效;可以預(yù)見,在不久的將來,我們要跟大量的 API 說再見了。

[[259665]]

去年我給出了一種繞過Android P對非SDK接口限制的簡單方法,經(jīng)驗證,這辦法在 Android Q 的 Beta 版上依然能正常使用。雖然這個方法需要進行內(nèi)存搜索,理論上有可能失敗,但實際上它曾在 VirtualXposed 和 太極 中得到了較為廣泛的驗證,從未收到過由于反射失敗而導(dǎo)致問題的反饋。而且據(jù)我所知,有若干用戶量不少的 APP 在線上使用了我提供的 FreeReflection 庫,想來應(yīng)該也是沒有問題的吧。

不過今天,我打算給出另外一種繞過限制的辦法。這個辦法目前來說是***方案,我個人使用了一個多月,不存在任何問題。

上次分析系統(tǒng)是如何施加這個限制 的時候,我們提到了幾種方式,最終給出了一種修改 runtime flag 的辦法;其中我們提到,系統(tǒng)有一個 fn_caller_is_trusted 條件:如果調(diào)用者是系統(tǒng)類,那么就允許被調(diào)用。這是顯而易見的,畢竟這些私有 API 就是給系統(tǒng)用的,如果系統(tǒng)自己都被拒絕了,這是在玩錘子呢?

也就是說,如果我們能以系統(tǒng)類的身份去反射,那么就能暢通無阻。問題是,我們?nèi)绾我浴赶到y(tǒng)的身份去反射」呢?一種最常見的辦法是,我們自己寫一個類,然后通過某種途徑把這個類的 ClassLoader 設(shè)置為系統(tǒng)的 ClassLoader,再借助這個類去反射其他類。但是這里的「通過某種途徑」依然要使用一些黑科技才能實現(xiàn),與修改 flags / inline hook 無本質(zhì)區(qū)別。

以系統(tǒng)類的身份去反射 有兩個意思,1. 直接把我們自己變成系統(tǒng)類;2. 借助系統(tǒng)類去調(diào)用反射。我們一個個分析。

「直接把我們自己變成系統(tǒng)類」這個方式有童鞋可能覺得天方夜譚,APP 的類怎么可能成為系統(tǒng)類?但是,一定不要被自己的固有思維給局限,一切皆有可能!我們知道,對APP來說,所謂的系統(tǒng)類就是被 BootstrapClassLoader 加載的類,這個 ClassLoader 并非普通的 DexClassLoader,因此我們無法通過插入 dex path的方式注入類。但是,Android 的 ART 在 Android O 上引入了 JVMTI,JVMTI 提供了將某一個類轉(zhuǎn)換為 BootstrapClassLoader 中的類的方法!具體來說,我們寫一個類暴露反射相關(guān)的接口,然后通過 JVMTI 提供的 AddToBootstrapClassLoaderSearch將此類加入 BootstrapClassLoader 就實現(xiàn)目的了。不過,JVMTI 要在 release 版本的 APP 上運行依然需要 Hack,所以這種途徑與其他的黑科技無本質(zhì)區(qū)別。

第二種方法,「借助系統(tǒng)的類去反射」也就是說,如果系統(tǒng)有一個方法systemMethod,這個systemMethod 去調(diào)用反射相反的方法,那么systemMethod毋庸置疑會反射成功。但是,我們從哪去找到這么一個方法給我們用?事實上,我們不僅能找到這樣的方法,而且這個方法能幫助我們調(diào)用任意的函數(shù),那就是反射本身!可能你已經(jīng)繞暈了,我解釋一下:

首先,我們通過反射 API 拿到 getDeclaredMethod 方法。getDeclaredMethod 是 public 的,不存在問題;這個通過反射拿到的方法我們稱之為元反射方法。

然后,我們通過剛剛反射拿到元反射方法去反射調(diào)用 getDeclardMethod。這里我們就實現(xiàn)了以系統(tǒng)身份去反射的目的——反射相關(guān)的 API 都是系統(tǒng)類,因此我們的元反射方法也是被系統(tǒng)類加載的方法;所以我們的元反射方法調(diào)用的 getDeclardMethod 會被認(rèn)為是系統(tǒng)調(diào)用的,可以反射任意的方法。

偽代碼如下:

 

  1. Method metaGetDeclaredMethod = 
  2.         Class.class.getDeclaredMethod("getDeclardMethod"); // 公開API,無問題 
  3. Method hiddenMethod = metaGetDeclaredMethod.invoke(hiddenClass, 
  4.         "hiddenMethod""hiddenMethod參數(shù)列表"); // 系統(tǒng)類通過反射使用隱藏 API,檢查直接通過。 
  5. hiddenMethod.invoke // 正確找到 Method 直接反射調(diào)用 

到這里,我們已經(jīng)能通過「元反射」的方式去任意獲取隱藏方法或者隱藏 Field 了。但是,如果我們所有使用的隱藏方法都要這么干,那還有點小麻煩。在 上文中,我們后來發(fā)現(xiàn),隱藏 API 調(diào)用還有「豁免」條件,具體代碼如下:

 

  1. if (shouldWarn || action == kDeny) { 
  2.     if (member_signature.IsExempted(runtime->GetHiddenApiExemptions())) { 
  3.       action = kAllow; 
  4.       // Avoid re-examining the exemption list next time
  5.       // Note this results in no warning for the member, which seems like what one would expect. 
  6.       // Exemptions effectively adds new members to the whitelist. 
  7.       MaybeWhitelistMember(runtime, member); 
  8.       return kAllow; 
  9.     } 
  10.     // 略     

只要 IsExempted 方法返回 true,就算這個方法在黑名單中,依然會被放行然后允許被調(diào)用。我們再觀察一下IsExempted方法:

 

  1. bool MemberSignature::IsExempted(const std::vector<std::string>& exemptions) { 
  2.   for (const std::string& exemption : exemptions) { 
  3.     if (DoesPrefixMatch(exemption)) { 
  4.       return true
  5.     } 
  6.   } 
  7.   return false

繼續(xù)跟蹤傳遞進來的參數(shù) runtime->GetHiddenApiExemptions() 發(fā)現(xiàn)這玩意兒也是 runtime 里面的一個參數(shù),既然如此,我們可以一不做二不休,仿照修改 runtime flag 的方式直接修改 hidden_api_exemptions_ 也能繞過去。但如果我們繼續(xù)跟蹤下去,會有個有趣的發(fā)現(xiàn):這個API 竟然是暴露到 Java 層的,有一個對應(yīng)的 VMRuntime.setHiddenApiExemptions Java方法;也就是說,只要我們通過 VMRuntime.setHiddenApiExemptions 設(shè)置下豁免條件,我們就能愉快滴使用反射了。

再結(jié)合上面這個方法,我們只需要通過 「元反射」來反射調(diào)用 VMRuntime.setHiddenApiExemptions 就能將我們自己要使用的隱藏 API 全部都豁免掉了。更進一步,如果我們再觀察下上面的 IsExempted 方法里面調(diào)用的 DoesPrefixMatch,發(fā)現(xiàn)這玩意兒在對方法簽名進行前綴匹配;童鞋們,我們所有Java方法類的簽名都是以 L開頭啊!如果我們把直接傳個 L進去,所有的隱藏API全部被赦免了!

詳細(xì)代碼在這里:https://github.com/tiann/FreeReflection

理論上講,這個方案不存在兼容性問題。即使 ROM 刪掉了 setHiddenApiExemptions 方法,我們依然可以用「元反射」的方式去反射隱藏API,并且所有的代碼加起來不超過30行!當(dāng)然,如果 Google 繼續(xù)改進驗證隱藏API調(diào)用的方法,這個方式可能會失效;但是目前的機制沒有問題。

文章的***,我想說的是,本文的目的不是刻意去繞過限制。不給思維設(shè)限、不給人生設(shè)限,才會有更多可能。

責(zé)任編輯:未麗燕 來源: Weishu's Notes
相關(guān)推薦

2018-04-18 07:34:58

2014-09-17 14:37:06

2013-05-22 15:31:07

AOP的CGlib實現(xiàn)

2016-03-03 10:29:31

用戶信息改進

2010-07-21 16:23:09

運行telnet程序

2011-12-29 21:28:31

Metro UI

2023-06-18 23:19:17

ChatGPTPPT方式

2016-07-11 16:18:26

互聯(lián)網(wǎng)

2014-01-13 10:36:53

C++錯誤

2019-01-02 08:04:29

GAN損失函數(shù)神經(jīng)網(wǎng)絡(luò)

2011-07-21 14:17:15

Ceylon

2013-09-30 10:13:08

IT女程序員

2013-10-21 15:11:15

OrmsqlOrm設(shè)計

2009-06-17 12:01:21

Linux

2015-07-28 13:36:04

2010-09-02 09:14:35

CSS浮動

2009-06-17 09:05:05

Linux隱藏網(wǎng)絡(luò)鏈接命令

2013-09-12 14:26:47

百度云網(wǎng)盤

2010-06-09 16:17:20

TCP IP協(xié)議網(wǎng)絡(luò)故

2009-04-01 08:27:07

Opera瀏覽器
點贊
收藏

51CTO技術(shù)棧公眾號

欧美精品videosex| 91精品在线视频观看| 亚洲综合图色| 欧美日韩1区2区| 国产资源第一页| 午夜激情在线视频| 美女任你摸久久 | 国产一区二区黄色| 波多野结衣人妻| 亚洲精品电影| 亚洲欧美制服丝袜| 人妻巨大乳一二三区| 悠悠资源网亚洲青| 亚洲色大成网站www久久九九| 国产精选在线观看91| 91丨九色丨海角社区| 欧美久久综合| 一区二区三区回区在观看免费视频| 欧美专区第二页| 日韩精品三区| 亚洲成av人片在www色猫咪| 色女人综合av| 五月天婷婷在线播放| 黑人巨大精品欧美一区| 日本午夜在线亚洲.国产| 国产大学生自拍| 成人精品中文字幕| 日韩精品视频在线免费观看 | 青青在线精品| 日韩欧美亚洲范冰冰与中字| 成人在线观看毛片| 自拍视频在线播放| 久久综合九色综合欧美亚洲| dy888夜精品国产专区| 中文字幕在线视频第一页| 亚洲少妇一区| 欧美精品久久久久久久久久| 国内毛片毛片毛片毛片毛片| 一本色道久久综合狠狠躁的番外| 精品美女在线观看| 一级黄色大片儿| 欧美一区=区三区| 色噜噜狠狠一区二区三区果冻| 妞干网在线观看视频| av中文字幕在线观看| 中文字幕中文字幕一区| 日韩一区二区三区资源| 日产精品久久久久久久性色| 成人激情视频网站| 国产精品v欧美精品v日韩| 国产视频一区二区三| 韩国精品在线观看| 成人免费网站在线观看| 91精品国自产| 国产在线精品一区二区| 成人激情视频在线| 中文字幕第三页| 蜜乳av一区二区| 国产欧美最新羞羞视频在线观看| 中文字幕丰满人伦在线| 蜜桃精品视频在线| 91亚洲人电影| 亚洲va天堂va欧美ⅴa在线| 国产精品亚洲第一| www.久久久| 黄色一级大片在线免费看国产一| 成人污视频在线观看| 国产日韩在线一区二区三区| 午夜视频福利在线| 久久久美女艺术照精彩视频福利播放| 久久久99国产精品免费| 久草在现在线| 中文字幕永久在线不卡| 永久免费在线看片视频| 天堂av最新在线| 午夜久久久久久电影| 国产乱子夫妻xx黑人xyx真爽| 都市激情亚洲一区| 欧美三区在线观看| 99国产精品免费视频| 国产毛片精品| 亚洲欧美日韩国产中文| 夫妇露脸对白88av| 欧美日本三区| 青青草精品毛片| 亚洲视频在线观看免费视频| 国产精品自拍一区| 国产免费一区二区| jizz日韩| 亚洲图片一区二区| 欧美伦理视频在线观看| 日韩专区视频网站| 亚洲加勒比久久88色综合| 欧美另类z0zx974| 91超碰成人| 9.1国产丝袜在线观看| 中文字幕精品一区二| 岛国av在线一区| 日韩视频在线观看国产| 羞羞视频在线观看不卡| 日韩欧美在线免费观看| www.成人黄色| 一区二区小说| 欧美国产视频一区二区| 亚洲国产av一区二区三区| 国产精品伊人色| 日本一区二区三区www| 宅男网站在线免费观看| 色婷婷亚洲婷婷| 亚洲午夜精品在线观看| 青青草综合网| 77777少妇光屁股久久一区| 国产精品玖玖玖| 26uuu另类欧美亚洲曰本| 日本一级淫片演员| 羞羞影院欧美| 亚洲国产三级网| 黄色片子在线观看| 老司机午夜精品视频| 国产精品成人观看视频免费| 亚洲视频tv| 色噜噜久久综合| 艳妇乳肉亭妇荡乳av| 亚洲色图欧美自拍| 无码小电影在线观看网站免费| 欧美挠脚心视频网站| 亚洲午夜久久久久久久久红桃 | 国产精品一区二区精品| 一区二区成人av| 中文字幕亚洲精品一区| 成人夜色视频网站在线观看| 99精品一区二区三区的区别| av一区在线| 精品一区精品二区| 国产无遮挡又黄又爽在线观看| 九色|91porny| 亚洲精品9999| 外国电影一区二区| 日韩精品在线视频观看| 中文字幕亚洲高清| 成人av综合在线| 国产免费黄色一级片| 视频二区欧美| 欧美大片第1页| 亚洲h视频在线观看| 亚洲精品综合在线| 超碰人人cao| 狠狠综合久久| 国产精品久久久一区二区三区| 18+视频在线观看| 91精品国产黑色紧身裤美女| 日本中文在线视频| 国内精品久久久久影院色| 在线观看欧美一区| 99er精品视频| 久久香蕉国产线看观看av| 国产视频一二三四区| 亚洲激情图片小说视频| 91性高潮久久久久久久| 一本到12不卡视频在线dvd| 91精品视频一区| caopeng在线| 欧美大片一区二区三区| 成人免费看片98| 成人黄色网址在线观看| 日本福利视频在线| 国产一区二区在线| 国产精品视频精品| 成人福利网站| 亚洲大胆美女视频| 四虎成人永久免费视频| 中文字幕精品三区| 午夜xxxxx| 狠狠综合久久av一区二区老牛| 国产在线一区二区三区播放| 欧美片第一页| 久久精品国产91精品亚洲| 欧美 日韩 中文字幕| 午夜精品视频一区| 一级黄色片网址| 国产一区二区三区四| 亚洲美免无码中文字幕在线| 国产毛片一区二区三区| 亚洲一区亚洲二区亚洲三区| 国产高清中文字幕在线| 在线看日韩欧美| 精品人妻一区二区三区含羞草 | 亚洲综合免费观看高清在线观看| 美女又爽又黄视频毛茸茸| 奇米一区二区三区av| 日本五级黄色片| 日本久久黄色| 国外成人免费视频| 一区二区三区人妻| 制服丝袜日韩| 成人在线视频福利| 中文av在线全新| 美女久久久久久久| 国产在线三区| 精品国产免费人成电影在线观看四季| 日韩乱码一区二区三区| 亚洲国产美女搞黄色| 国产午夜精品理论片在线| 91女人视频在线观看| 99视频在线视频| 欧美破处大片在线视频| 欧美国产视频在线观看| 日韩专区视频网站| 国产国语videosex另类| www久久日com| 亚洲欧美日韩综合| 91禁在线观看| 欧洲av在线精品| 国产一级片免费观看| 欧美国产精品一区二区三区| avtt香蕉久久| 国内精品免费**视频| heyzo国产| 在线看片不卡| 亚洲国产精品视频一区| 牛牛精品成人免费视频| 国产中文字幕日韩| 嗯啊主人调教在线播放视频| www.午夜精品| 国产51人人成人人人人爽色哟哟| 日韩欧美国产成人一区二区| 91极品身材尤物theporn| 欧美午夜片欧美片在线观看| 欧美日韩国产精品一区二区三区| 国产农村妇女精品| 伊人网伊人影院| 成人午夜av在线| 欧美一级视频在线| 六月丁香婷婷色狠狠久久| 欧美极品欧美精品欧美图片| 国内精品美女在线观看| 国产精品99久久久久久大便| 日韩电影免费网址| 欧美日韩成人一区二区三区 | 成人欧美一区二区三区视频xxx| 高清成人在线| 日本人成精品视频在线| 黑人玩欧美人三根一起进| 久久亚洲国产成人| 秋霞影院午夜丰满少妇在线视频| 在线播放国产一区二区三区| 青青久在线视频| 亚洲丁香久久久| 中文字幕av网站| 欧美亚洲一区二区三区四区| 国内免费精品视频| 调教+趴+乳夹+国产+精品| 日韩黄色精品视频| 亚洲成人av资源| 久久久91视频| 中文字幕视频一区| 国产一区第一页| 一区精品在线播放| 一级黄色片日本| 亚洲少妇屁股交4| 久久久久99精品成人| 久久久久9999亚洲精品| 中文字幕xxx| 久久蜜桃一区二区| 欧美老熟妇乱大交xxxxx| 久久亚洲一区二区三区明星换脸| 手机免费看av| 国产精品视频一二| 欧美aaa级片| 亚洲另类色综合网站| 久久久久香蕉视频| 亚洲免费观看高清完整| 精国产品一区二区三区a片| 一区二区三区四区在线免费观看| 欧美久久久久久久久久久久| 亚洲午夜精品久久久久久久久| 国产剧情在线视频| 精品视频在线视频| 国产又粗又猛又黄又爽| 精品盗摄一区二区三区| 亚洲欧美综合一区二区| 亚洲性69xxxbbb| av网址在线| 久久久亚洲影院| 亚洲涩涩在线| 国产精品久久久久久超碰| 97久久中文字幕| 国产精品日韩二区| 日韩精品免费一区二区三区竹菊| 亚洲狠狠婷婷综合久久久| 99久久亚洲精品蜜臀| 草草草视频在线观看| 蜜乳av另类精品一区二区| 一本岛在线视频| 国产高清无密码一区二区三区| 丰满熟女人妻一区二区三区| 久久久久久久综合| www.狠狠爱| 国产精品视频yy9299一区| 日韩av男人天堂| 欧美午夜精品电影| 亚洲黄色小说网| 视频在线观看99| 丁香花在线电影| 国产精品美女呻吟| 青青草原在线亚洲| 中文字幕一区二区三区最新| 在线日本高清免费不卡| 天天操夜夜操很很操| 99久久免费精品| 九九热视频在线免费观看| 欧美性极品xxxx娇小| 99视频在线观看免费| 亚洲免费影视第一页| 免费毛片在线看片免费丝瓜视频| 日韩av色综合| 一区二区日韩| 一区二区不卡在线视频 午夜欧美不卡'| 韩国欧美一区| 伊人网在线综合| 成人丝袜高跟foot| 欧美xxxx黑人xyx性爽| 日本道免费精品一区二区三区| 国产理论片在线观看| 深夜精品寂寞黄网站在线观看| 欧美xxxx做受欧美88bbw| 国产精品久久久久久久美男 | 日本一区二区在线| 一本一道久久a久久精品蜜桃 | 久久久久久网| 精品黑人一区二区三区观看时间| 亚洲人成伊人成综合网小说| 国产成人精品一区二三区| 精品国产凹凸成av人网站| 欧美videos极品另类| 51午夜精品视频| 亚洲精品小区久久久久久| av免费观看国产| 成人国产精品免费观看视频| 2018天天弄| 在线播放亚洲一区| a毛片在线播放| 91久久久久久久一区二区| 日韩黄色大片| 久久精品国产露脸对白| 中文字幕制服丝袜一区二区三区| www五月天com| 国产一区二区三区在线看 | 男人添女人下部视频免费| 久久九九免费| 国产肥白大熟妇bbbb视频| 欧美日韩一区免费| 国产资源在线观看| 日韩av电影手机在线| 免费精品国产| 亚洲精品视频导航| 国产精品白丝在线| 91福利在线观看视频| 美女性感视频久久久| 欧美黄色一级| 在线视频精品一区| 国产福利91精品| 欧美成人精品欧美一| 精品欧美一区二区三区精品久久| gogo在线高清视频| av免费精品一区二区三区| 99精品久久久| 黄色片视频免费观看| 色8久久精品久久久久久蜜| 在线播放日本| 91夜夜未满十八勿入爽爽影院| 一本一道久久a久久精品蜜桃 | 粗暴蹂躏中文一区二区三区| 亚洲美女色播| 欧美一区二区三区综合| 91片在线免费观看| 国产亚洲精品久久久久久打不开 | 日韩中文字幕91| 91视频免费观看网站| 久久激情视频| 国产精品久久亚洲| 欧美日韩一卡| 日本高清www| 欧美日韩中文国产| gogo久久| 日本一区二区三区视频免费看| 日本免费在线视频不卡一不卡二| 欧美日韩大片在线观看| 亚洲国产精品国自产拍av秋霞| 男人皇宫亚洲男人2020| 一区二区三区久久网| 国产精品2024| 欧美 亚洲 另类 激情 另类 | 蜜桃av免费看| 欧美二区三区的天堂| 国产在线精彩视频| 天堂资源在线亚洲资源| 美女久久久精品| 日本午夜视频在线观看| 国产一区二区欧美日韩|