日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android 繞過反射黑名單的方法

瀏覽:123日期:2022-09-20 18:11:12
限制原理

Google 從 Android P 開始引入了針對非公開 API 的限制,這一點可以從 Native 相關(guān)的源碼中找到限制的原理,從而從中找到解決辦法,不過非必要原因不太建議去挑戰(zhàn)這種限制,畢竟不清楚在后續(xù)的版本中會不會做限制,維護起來挺麻煩的。

在 Native 層有幾個訪問級別:

class HiddenApiAccessFlags { public: enum ApiList { kWhitelist = 0, kLightGreylist, kDarkGreylist, kBlacklist, };}

另外還有幾個對應(yīng)的響應(yīng)級別:

enum Action { kAllow, //通過 kAllowButWarn, //通過,但日志警告 kAllowButWarnAndToast, //通過,且日志警告和彈窗 kDeny //拒絕訪問};

這里介紹一下網(wǎng)上的一些解決方式,此外,還可以把我們調(diào)用了反射方法的類的類加載器設(shè)置為系統(tǒng)類加載器,這樣就可以繞過 Native 層的限制了。

系統(tǒng)類偽裝

黑名單在系統(tǒng)中有一個 fn_caller_is_trusted 的條件:如果調(diào)用者是系統(tǒng)類,那么就允許被調(diào)用。即如果我們能以系統(tǒng)類的身份去反射,那么就能暢通無阻:

首先通過反射 API 拿到 getDeclaredMethod 方法。getDeclaredMethod 是 public 的,不存在問題;這個通過反射拿到的方法網(wǎng)上稱之為元反射方法。 然后通過剛剛的元反射方法去反射調(diào)用 getDeclardMethod。這里我們就實現(xiàn)了以系統(tǒng)身份去反射的目的——反射相關(guān)的 API 都是系統(tǒng)類,因此我們的元反射方法也是被系統(tǒng)類加載的方法;所以我們的元反射方法調(diào)用的 getDeclardMethod 會被認為是系統(tǒng)調(diào)用的,可以反射任意的方法。

偽代碼如下:

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

隱藏 API 的調(diào)用有「豁免」條件,即只要它是豁免的,則即使它在黑名單中,也會被放行。這種方式暴露給了 Java 層,因此可以通過 VMRuntime.setHiddenApiExemptions 方法來實現(xiàn)。再結(jié)合上面這個方法,我們只需要通過 「元反射」 來反射調(diào)用 VMRuntime.setHiddenApiExemptions 就能將我們自己要使用的隱藏 API 全部都豁免掉了。另外系統(tǒng)在檢查豁免時是通過方法簽名進行前綴匹配的,而 Java 方法簽名都是 L 開頭的,因此我們可以把直接傳個 L 進去,那么所有的隱藏API全部被赦免了!

源碼直接參考網(wǎng)上大佬的開源項目: FreeReflection。

public final class BootstrapClass { private static final String TAG = 'BootstrapClass'; private static Object sVmRuntime; private static Method setHiddenApiExemptions; static { if (SDK_INT >= Build.VERSION_CODES.P) { try {Method forName = Class.class.getDeclaredMethod('forName', String.class);Method getDeclaredMethod = Class.class.getDeclaredMethod('getDeclaredMethod', String.class, Class[].class);Class<?> vmRuntimeClass = (Class<?>) forName.invoke(null, 'dalvik.system.VMRuntime');Method getRuntime = (Method) getDeclaredMethod.invoke(vmRuntimeClass, 'getRuntime', null);setHiddenApiExemptions = (Method) getDeclaredMethod.invoke(vmRuntimeClass, 'setHiddenApiExemptions', new Class[]{String[].class});sVmRuntime = getRuntime.invoke(null); } catch (Throwable e) {Log.w(TAG, 'reflect bootstrap failed:', e); } } } /** * make the method exempted from hidden API check. * * @param method the method signature prefix. * @return true if success. */ public static boolean exempt(String method) { return exempt(new String[]{method}); } /** * make specific methods exempted from hidden API check. * * @param methods the method signature prefix, such as 'Ldalvik/system', 'Landroid' or even 'L' * @return true if success */ public static boolean exempt(String... methods) { if (sVmRuntime == null || setHiddenApiExemptions == null) { return false; } try { setHiddenApiExemptions.invoke(sVmRuntime, new Object[]{methods}); return true; } catch (Throwable e) { return false; } } /** * Make all hidden API exempted. * * @return true if success. */ public static boolean exemptAll() { return exempt(new String[]{'L'}); }}

以上就是Android 繞過反射黑名單的方法的詳細內(nèi)容,更多關(guān)于Android 繞過反射黑名單的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
69精品国产久热在线观看| 欧美资源在线| 亚洲69av| 亚洲精品伊人| 日韩国产在线观看| 一区二区三区国产在线| 国产亚洲福利| 爽好久久久欧美精品| 亚洲视频电影在线| 青青伊人久久| 国产精品扒开腿做爽爽爽软件| 欧美日韩亚洲一区在线观看| 国产精品日韩精品在线播放| 麻豆国产精品一区二区三区| 精品视频高潮| 麻豆精品视频在线| 国产精品22p| 国产一区二区三区四区五区 | 高清日韩中文字幕| 久久精品伊人| 国产伦精品一区二区三区视频| 视频精品一区| 日韩精品导航| 日韩av一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 精品精品国产三级a∨在线| 欧美激情福利| 精品一二三区| 四虎国产精品免费观看| 黄色网一区二区| 美女av一区| 欧美aaaaaa午夜精品| 日韩av黄色在线| 欧美午夜三级| 美女尤物国产一区| 精品资源在线| 国产成人精品一区二区免费看京| 欧美91在线| 国产精品黑丝在线播放| 欧美日韩亚洲一区| 国产精品嫩草影院在线看| 中文字幕成人| 欧美日韩 国产精品| 亚洲精品成人一区| 国产三级精品三级在线观看国产| 日韩精品免费视频人成| 青草综合视频| 亚洲免费福利一区| 亚洲精品日韩久久| 日本午夜精品久久久| 美女久久久精品| 岛国av在线播放| 神马午夜在线视频| 黄色日韩精品| 91精品丝袜国产高跟在线| 免费日韩成人| 香蕉久久99| 亚洲精品美女| 久久影院一区二区三区| 涩涩av在线| 日韩影院在线观看| 你懂的网址国产 欧美| 国产一区二区三区四区大秀| 激情五月综合网| 欧美日韩18| 久久视频国产| 婷婷成人av| 国产一区二区三区天码| 九九久久婷婷| 亚洲18在线| 老司机精品在线| 91精品久久久久久久久久不卡| 日本欧美不卡| 奶水喷射视频一区| 国产精品久久久网站| 日韩欧美国产精品综合嫩v| 日韩影院免费视频| 国产乱码精品一区二区三区四区| 久久91视频| 99在线|亚洲一区二区| 国产精品永久| 国产一区二区三区成人欧美日韩在线观看| 99成人在线视频| 日韩精品亚洲一区二区三区免费| 国产91在线精品| 视频一区免费在线观看| 久久精品国产久精国产爱| 99国产精品久久久久久久| 国产精品亚洲一区二区在线观看| 日韩大片在线播放| 欧美另类中文字幕| 欧美日韩国产在线观看网站 | 国产成人精品一区二区免费看京 | 麻豆国产在线| 午夜电影一区| 狠狠久久伊人| 黄色在线网站噜噜噜| 国产欧美三级| 日本一区二区免费高清| 视频一区二区三区中文字幕| 久久uomeier| 一区二区精彩视频| 高清精品久久| 国产精品hd| 国产欧美日韩亚洲一区二区三区| 蜜乳av另类精品一区二区| 国产suv精品一区| 亚洲丝袜美腿一区| 久久一级电影| 91精品一区二区三区综合在线爱| 国内精品福利| 久久69成人| 韩日一区二区| 国产精品久久| 给我免费播放日韩视频| 国产精品一区毛片| 国产精品久久| 欧美日韩va| 国产欧美日韩精品一区二区免费| 老司机精品视频在线播放| 欧美日韩免费观看视频| 国产精品videossex| 日韩精品一级中文字幕精品视频免费观看 | 午夜欧美精品| 国产伦久视频在线观看| 国产欧美日韩一区二区三区四区 | 国产一区二区三区精品在线观看| 日韩不卡一二三区| 久久亚洲精品伦理| 欧美日韩国产免费观看| 国产一区二区三区视频在线| 深夜日韩欧美| 国产视频欧美| 色爱av综合网| 日韩成人精品一区二区| 日韩超碰人人爽人人做人人添| 久久国产亚洲精品| 免费亚洲婷婷| 国产日韩亚洲| 日韩午夜视频在线| 视频在线在亚洲| 成人av二区| 久久久9色精品国产一区二区三区| 国产福利亚洲| 国产伦理久久久久久妇女| 久久视频国产| 91精品一区| 激情综合网站| 久久精品福利| 精品亚洲a∨| 欧美日韩va| 久久精品97| 奇米亚洲欧美| 日本视频一区二区| 青草综合视频| 国产精品一页| 麻豆一区二区99久久久久| 日韩1区2区日韩1区2区| 欧美日韩一区二区三区不卡视频 | 日韩中文欧美在线| 成人va天堂| 国产精品国产一区| 国产精品v亚洲精品v日韩精品| 少妇精品久久久一区二区| 美女国产一区| 在线亚洲观看| 亚洲精品电影| 亚洲精品91| 亚洲精华国产欧美| 久久理论电影| 亚洲国产专区| 黄色亚洲大片免费在线观看| 91久久中文| 天堂久久一区| 国产精品主播在线观看| 国产激情一区| 成人国产精品一区二区网站| 国产在线观看www| 亚洲www啪成人一区二区| 欧美美女一区| 日韩精品一区二区三区中文在线 | 成人av二区| 久久精品91| 日韩在线短视频| 国产精品三级| 91偷拍一区二区三区精品| 97精品一区| 999久久久国产精品| 亚洲欧美一区在线| 日韩专区一卡二卡| 日韩av网站免费在线| 国产乱人伦丫前精品视频| 国产精品一区二区精品| 中文字幕人成乱码在线观看| 九色porny丨国产首页在线| 国产精品日韩久久久| 偷拍亚洲精品| 日韩av在线播放中文字幕| 美女视频黄免费的久久| 欧美激情三区|