精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

18网站在线观看| 国产成人在线免费视频 | 国产+人+亚洲| 亚洲av无码一区二区三区观看| 免费看男女www网站入口在线| 久久亚区不卡日本| 91久久精品国产91性色| 日韩免费一级片| 欧美日韩一二| 精品国产91亚洲一区二区三区婷婷| av免费观看网| 男人天堂久久久| 成人精品视频网站| 国产精品久久久久av免费| 无码人妻精品一区二区三区夜夜嗨| 国产又大又长又粗| 五月婷婷开心中文字幕| 日韩电影网1区2区| 欧美精品做受xxx性少妇| 亚洲国产综合视频| 国产一区二区视频在线看| 精品免费在线视频| 好吊色视频988gao在线观看| 三级毛片在线免费看| 国内成人免费视频| 国产精品爱久久久久久久| 免费毛片在线播放免费| 日韩欧美午夜| 亚洲免费人成在线视频观看| 中文字幕第六页| 成人国产一区| 亚洲va国产va欧美va观看| 26uuu成人| 国产一级网站视频在线| 99精品视频一区二区三区| 91久久精品在线| 国产乡下妇女三片| 一区二区三区四区五区精品视频 | 亚洲欧洲美洲一区二区三区| 亚洲欧美日韩在线高清直播| 激情小说欧美色图| 电影一区中文字幕| 欧美日韩精品一区二区三区四区 | 噜噜噜噜噜久久久久久91| 性一交一乱一伧老太| 麻豆国产精品一区二区三区 | 欧美精品韩国精品| 在线欧美三区| 欧美激情一区二区三级高清视频| 夫妇露脸对白88av| 国产99精品| 亚洲欧美国产一区二区三区 | 国产精品―色哟哟| 秋霞在线观看一区二区三区| 日韩大胆视频| 91首页免费视频| 国产综合动作在线观看| 欧美亚洲精品在线观看| 成人亚洲一区二区一| 国产精品一区二区欧美| 东京干手机福利视频| 国产老肥熟一区二区三区| 成人福利在线观看| 国产极品久久久| 国产精品自拍一区| 高清国产在线一区| 97免费观看视频| 国产一区二区三区日韩| 亚洲在线观看视频| 动漫av一区二区三区| 99久久精品国产麻豆演员表| 精品一区二区三区国产| 日韩精品福利| 国产精品天天看| 在线观看成人av电影| 国产原厂视频在线观看| 亚洲摸摸操操av| 高清无码视频直接看| 白浆在线视频| 在线看日本不卡| 超碰人人草人人| 香蕉免费一区二区三区在线观看| 亚洲国产91精品在线观看| 亚洲精品理论片| 欧美在线观看视频一区| 久久综合网hezyo| 免费在线视频一区二区| 国产欧美一区二区色老头| 国产成一区二区| 国产精品探花视频| 成人精品亚洲人成在线| 欧美日韩一区二区三区在线观看免| 国产综合在线观看| 亚洲免费av网站| 男人操女人逼免费视频| 国内自拍亚洲| 精品第一国产综合精品aⅴ| 亚洲av无码一区二区二三区| 日韩综合在线| 国内伊人久久久久久网站视频 | 亚洲大片在线| 国产精品露脸av在线| 国产成人麻豆精品午夜在线| 91在线码无精品| 亚洲第一导航| 91禁在线看| 欧美区在线观看| 在线观看一区二区三区四区| av在线不卡免费观看| 久久久久久久一区二区| 中文字幕人妻一区二区三区视频| 粉嫩蜜臀av国产精品网站| 日韩精品一区二区三区外面| 国产深夜视频在线观看| 欧美亚洲国产一区在线观看网站| 男人添女人荫蒂国产| 精品大片一区二区| 午夜精品视频网站| 国产乱码精品一区二区| 久久精品欧美一区二区三区不卡| 8x8x华人在线| 99久久伊人| 日韩成人在线视频观看| 日韩av综合网站| 狠狠热免费视频| 高清一区二区三区| 久久最新资源网| 久久精品视频2| 99久久99久久精品免费看蜜桃| 最新精品视频| 一区二区视频免费完整版观看| 精品第一国产综合精品aⅴ| 欧美精品久久久久久久久46p| 久久精品官网| 麻豆av一区二区| brazzers在线观看| 欧美一区二区福利视频| 老司机精品免费视频| 久久激情视频| 欧美婷婷久久| 麻豆成全视频免费观看在线看| 日韩欧美精品三级| 日本中文在线视频| 另类成人小视频在线| 天堂一区二区三区| 国偷自产一区二区免费视频| 亚洲国模精品私拍| 国产精品成人av久久| 国产精品综合一区二区三区| 椎名由奈jux491在线播放| 91丨精品丨国产| 深夜福利亚洲导航| 亚洲综合免费视频| 国产精品国产三级国产aⅴ中文| 动漫av免费观看| 国产精品一在线观看| 欧美一级在线亚洲天堂| 嫩草在线播放| 欧美在线你懂得| 在线观看免费黄色网址| 老司机精品视频在线| 夜夜爽99久久国产综合精品女不卡 | 黑人巨茎大战欧美白妇| 日韩精品成人| 欧美精品www在线观看| 亚洲精品网站在线| 天天影视色香欲综合网老头| 在线免费播放av| 丝袜亚洲另类丝袜在线| 日韩精品无码一区二区三区| 欧美伊人亚洲伊人色综合动图| 久久综合88中文色鬼| 风流少妇一区二区三区91| 欧美性生交大片免网| 亚洲一级片在线播放| 国产一区二区美女| 欧美不卡在线播放| 精品一二三区| 91在线中文字幕| 国内精彩免费自拍视频在线观看网址 | 欧美一区二区公司| 黑人与娇小精品av专区| 特级西西人体高清大胆| 国产精品伊人色| 国产91在线免费| 欧美3p在线观看| 国产精品乱子乱xxxx| 欧美羞羞视频| 欧美成人午夜免费视在线看片| 日韩在线观看视频网站| 在线亚洲免费视频| 国产大学生自拍| 91视频观看视频| www.国产视频.com| 无码人妻黑人中文字幕| 久久午夜视频| 影音先锋成人资源网站| 粉嫩av国产一区二区三区| 韩国欧美亚洲国产| 浮生影视网在线观看免费| 91福利在线免费观看| 日本黄色动态图| 另类调教123区| 日韩精品视频在线观看视频| 日韩系列在线| 国产精品视频精品| 欧美xxx黑人xxx水蜜桃| 亚洲视频电影图片偷拍一区| 成人h动漫精品一区二区无码| 黄色成人在线免费| 亚洲欧美另类日本| 91视视频在线观看入口直接观看www| www.色就是色.com| 99精品免费| 宅男av一区二区三区| 欧美2区3区4区| 国产精品海角社区在线观看| 2024最新电影在线免费观看| 日韩电影中文字幕在线| 在线观看亚洲国产| 欧美日韩久久久久| 懂色av懂色av粉嫩av| 久久久久久电影| 色婷婷狠狠18禁久久| 日韩成人免费电影| 欧日韩免费视频| 日韩激情免费| 日韩精品福利视频| 噜噜噜狠狠夜夜躁精品仙踪林| 国产不卡在线观看| 成全电影大全在线观看| 久久中文字幕一区| 99视频在线观看地址| 亚洲爱爱爱爱爱| 亚洲成人av综合| 欧美日韩综合色| 国产成人精品一区二三区| 亚洲欧美色图小说| 91麻豆精品成人一区二区| 久久久久久久性| av av在线| 青青草国产精品97视觉盛宴| 久久久久久久久久久久久国产精品| 国产精品草草| 爱爱爱视频网站| 91成人免费| 色姑娘综合av| 久久不见久久见中文字幕免费| 99超碰麻豆| youjizz亚洲| 99re在线观看视频| 久久中文字幕一区二区| 亚洲自拍偷拍色片视频| 国产精品videosex极品| 久久久999国产精品| 成人免费在线视频网| 精品视频在线播放| 国产强伦人妻毛片| 欧美另类变人与禽xxxxx| 亚洲一级视频在线观看| 欧美日韩国产123区| 中文无码精品一区二区三区| 日韩欧美主播在线| 无码人妻久久一区二区三区 | 久久激情一区| 欧美午夜性生活| 日韩精品成人一区二区在线| 日韩精品一区中文字幕| 欧美亚洲网站| 成人在线观看a| 丝袜亚洲另类欧美| 91美女片黄在线观看91美女| 黄色免费视频网站| 成人av在线网| 黄色录像a级片| 久久蜜桃av一区精品变态类天堂 | 国产私拍一区| 国产欧美三级电影| 欧美一区二区三区精美影视 | 欧美日韩一区二区三区在线视频| 精品国精品国产自在久国产应用| 欧美三级电影在线播放| 狠狠色丁香婷婷综合影院| 国产精品中出一区二区三区| 欧美人成在线观看ccc36| 久久资源av| 精品无人区麻豆乱码久久久| 免费看污污视频| 日韩一级不卡| 国产精品无码专区av在线播放| 精品在线播放免费| 亚洲怡红院在线| 国产a区久久久| yy1111111| 亚洲人成网站精品片在线观看| 国产精品久久久久久久精| 亚洲电影中文字幕在线观看| 久久精品视频国产| 在线观看免费视频综合| 国产亲伦免费视频播放| 欧美精品一区二区三区蜜桃视频| 午夜在线视频| 久久久久久久久久久av| 另类专区亚洲| 99精彩视频| 国产成人av| 久久国产精品免费观看| 久久中文字幕一区二区三区| 国产欧美一区二| 丁香天五香天堂综合| b站大片免费直播| 欧美激情偷拍自拍| 91av中文字幕| 日韩精品第一| 精品久久精品久久| 天天操综合网| 国产精品视频网站在线观看| 久久免费高清| 亚洲精品激情视频| 国产精品卡一卡二| 丰满少妇xoxoxo视频| 日韩视频在线一区二区| 黄色软件在线| 91av国产在线| 精品中文字幕一区二区三区四区| 鲁丝一区鲁丝二区鲁丝三区| 精品福利av| 中文字幕色网站| 久久女同精品一区二区| 国产在线视频二区| 欧美日韩一卡二卡| 精品无人乱码| 68精品久久久久久欧美| 国产精品一区二区三区av| 亚洲一区二区三区涩| 亚洲一区成人| 中文字幕18页| 亚洲国产精品欧美一二99| 一级黄色大毛片| 亚洲色无码播放| 亚洲成人短视频| 国产呦系列欧美呦日韩呦| 亚洲国产日韩欧美在线| 久久精品影视大全| 久久亚洲精品国产精品紫薇| 亚洲国产成人精品激情在线| 日韩一区二区免费在线观看| 18免费在线视频| 国产精品中文字幕久久久| 蜜乳av综合| 欧美在线一区视频| 成人动漫av在线| 国产日韩欧美在线观看视频| 欧美日韩欧美一区二区| 欧美天天影院| 国产精品香蕉av| 成人一二三区| 亚洲涩涩在线观看| 中文字幕在线观看一区二区| 中文字幕一区二区人妻视频| 亚洲天堂av图片| 视频在线日韩| 欧美一区二区三区四区夜夜大片 | 好了av在线| 成人午夜激情免费视频| 欧美aaaa视频| 成人免费在线观看视频网站| 国产精品美女www爽爽爽| 最近中文字幕在线观看| 国产日韩免费| 91亚洲一区二区| 亚洲激情校园春色| 亚洲av色香蕉一区二区三区| 九色成人免费视频| 91大神精品| 日本黄网站免费| 久久日韩粉嫩一区二区三区| 中文字字幕在线观看| 精品国产视频在线 | 欧美精品成人91久久久久久久| 精品淫伦v久久水蜜桃| 久久久亚洲国产精品| 99re8在线精品视频免费播放| 精人妻无码一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 巨茎人妖videos另类| 中文一区一区三区免费| 国产伦精品一区二区三区免费 | 日韩国产在线| 91精品又粗又猛又爽| 欧美日韩中文字幕在线| 五月香视频在线观看| 91免费高清视频| 亚洲日本成人| 永久免费看mv网站入口| 日韩一区二区三区免费看| 97在线视频免费观看完整版| 亚洲v日韩v欧美v综合| 国产在线国偷精品免费看| 久久免费看少妇高潮v片特黄|