import{_ as t,r,o as p,c as d,b as o,d as n,a,e}from"./app.7900f22c.js";const l={},c=a(`

\u57FA\u7840\u77E5\u8BC6

\u8FD9\u91CC\u6536\u96C6\u4E86 Xposed \u76F8\u5173\u7684\u4ECB\u7ECD\u4EE5\u53CA\u5F00\u542F\u524D\u9700\u8981\u638C\u63E1\u7684\u77E5\u8BC6\u8981\u70B9\uFF0C\u5DF2\u7ECF\u4E86\u89E3\u7684\u540C\u5B66\u53EF\u4EE5\u7565\u8FC7\u3002

\u57FA\u7840\u77E5\u8BC6\u5185\u5BB9\u5E76\u4E0D\u4E00\u5B9A\u5B8C\u5168\u51C6\u786E\uFF0C\u8BF7\u6839\u636E\u81EA\u5DF1\u7684\u89C1\u89E3\u914C\u60C5\u9605\u8BFB\uFF0C\u82E5\u53D1\u73B0\u5185\u5BB9\u6709\u9519\u8BEF\u6B22\u8FCE\u6307\u6B63\u5E76\u5E2E\u52A9\u6211\u4EEC\u5B8C\u5584\u548C\u6539\u8FDB\u3002

\u76F8\u5173\u4ECB\u7ECD

\u8FD9\u91CC\u4ECB\u7ECD\u4E86 Xposed \u4EE5\u53CA Hook \u7684\u5DE5\u4F5C\u539F\u7406\u3002

Xposed \u662F\u4EC0\u4E48

Xposed \u6846\u67B6 (Xposed Framework) \u662F\u4E00\u5957\u5F00\u6E90\u7684\u3001\u5728 Android \u9AD8\u6743\u9650\u6A21\u5F0F\u4E0B\u8FD0\u884C\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u53EF\u4EE5\u5728\u4E0D\u4FEE\u6539 APK \u6587\u4EF6\u7684\u60C5\u51B5\u4E0B\u5F71\u54CD\u7A0B\u5E8F\u8FD0\u884C\uFF08\u4FEE\u6539\u7CFB\u7EDF\uFF09\u7684\u6846\u67B6\u670D\u52A1\uFF0C\u57FA\u4E8E\u5B83\u53EF\u4EE5\u5236\u4F5C\u51FA\u8BB8\u591A\u529F\u80FD\u5F3A\u5927\u7684\u6A21\u5757\uFF0C\u4E14\u5728\u529F\u80FD\u4E0D\u51B2\u7A81\u7684\u60C5\u51B5\u4E0B\u540C\u65F6\u8FD0\u4F5C\u3002

\u4E0A\u8FF0\u5185\u5BB9\u590D\u5236\u81EA\u767E\u5EA6\u767E\u79D1\u3002

Xposed \u80FD\u505A\u4EC0\u4E48

\u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86 Xposed \u7684\u57FA\u672C\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

Xposed Framework
\u2514\u2500\u2500 App's Environment
    \u2514\u2500\u2500 Hooker (Hooked)
        ...
    App's Environment
    \u2514\u2500\u2500 Hooker (Hooked)
        ...
    ...

\u6211\u4EEC\u53EF\u4EE5\u5728\u5BBF\u4E3B (APP) \u8FD0\u884C\u65F6\u901A\u8FC7\u6CE8\u5165\u5BBF\u4E3B (APP) \u6765\u8FBE\u5230\u63A7\u5236\u5176\u884C\u4E3A\u7684\u6700\u7EC8\u76EE\u7684\u3002

Xposed \u7684\u8FD9\u79CD\u8FD0\u884C\u65B9\u5F0F\u88AB\u79F0\u4E3A\u5BC4\u751F\uFF0CXposed \u6A21\u5757\u8DDF\u968F\u5BBF\u4E3B\u7684\u751F\u547D\u5468\u671F\uFF0C\u5728\u5BBF\u4E3B\u7684\u751F\u547D\u5468\u671F\u5185\u5B8C\u6210\u81EA\u5DF1\u7684\u751F\u547D\u5386\u7A0B\u3002

\u6211\u4EEC\u53EF\u4EE5\u901A\u8FC7\u53CD\u5C04\u7684\u65B9\u5F0F\u8C03\u7528\u5BBF\u4E3B\u7684\u65B9\u6CD5\u3001\u53D8\u91CF\u3001\u6784\u9020\u65B9\u6CD5\uFF0C\u4EE5\u53CA\u4F7F\u7528 XposedBridge \u6240\u63D0\u4F9B\u7684 Hook \u64CD\u4F5C\u52A8\u6001\u5730\u5728\u5BBF\u4E3B (APP) \u8981\u6267\u884C\u7684\u65B9\u6CD5\u524D\u540E\u63D2\u5165\u81EA\u5DF1\u7684\u4EE3\u7801\uFF0C\u6216\u5B8C\u5168\u66FF\u6362\u76EE\u6807\uFF0C\u751A\u81F3\u662F\u62E6\u622A\u3002

\u53D1\u5C55\u8FC7\u7A0B

\u5982\u4ECA\u7684 Xposed \u7BA1\u7406\u5668\u5DF2\u5B8C\u5168\u88AB\u5176\u884D\u751F\u4F5C\u54C1\u66FF\u4EE3\uFF0C\u800C SuperSU \u7684\u65F6\u4EE3\u4E5F\u5DF2\u7ECF\u843D\u5E55\u4E86\uFF0C\u73B0\u5728\uFF0C\u501F\u52A9 Magisk \u4F7F\u540E\u9762\u7684\u4E00\u5207\u53C8\u6210\u4E3A\u4E86\u53EF\u80FD\u3002

\u5176\u53D1\u5C55\u53F2\u5927\u81F4\u53EF\u5206\u4E3A Xposed(Dalvik) \u2192 Xposed(ART) \u2192 Xposed(Magisk) \u2192 EdXposed(Riru)/LSPosed(Riru/Zygisk)

\u884D\u751F\u4EA7\u54C1

\u4E0B\u65B9\u7684\u7ED3\u6784\u63CF\u8FF0\u4E86\u7C7B\u4F3C Xposed \u7684 Hook Framework \u7684\u5DE5\u4F5C\u65B9\u5F0F\u548C\u539F\u7406\u3002

App's Environment
\u2514\u2500\u2500 Hook Framework
    \u2514\u2500\u2500 Hooker (Hooked)
        ...

\u901A\u8FC7 Xposed \u7684\u8FD0\u884C\u539F\u7406\uFF0C\u4ECE\u800C\u884D\u751F\u4E86\u5F88\u591A\u540C\u7C7B\u578B\u6846\u67B6\uFF0C\u968F\u7740\u5F53\u4ECA\u65F6\u4EE3\u7684\u79FB\u52A8\u8BBE\u5907\u83B7\u53D6 Root \u6743\u9650\u751A\u81F3\u5237\u673A\u8D8A\u6765\u8D8A\u56F0\u96BE\u4E14\u4E0D\u662F\u521A\u9700\u7684\u65F6\u5019\uFF0C\u4E00\u4E9B\u514D Root \u6846\u67B6\u4E5F\u968F\u4E4B\u4EA7\u751F\uFF0C\u4F8B\u5982 LSPatch\u3001\u592A\u6781\u3002

\u8FD9\u4E9B\u5728 ART \u5C42\u9762\u4E0A\u7684 Hook Framework \u540C\u6837\u4E5F\u53EF\u4E0D\u501F\u52A9 Xposed API \u5B8C\u6210\u5176\u548C Xposed \u539F\u7406\u4E00\u6837\u7684 Hook \u6D41\u7A0B\uFF0C\u514D Root \u7684\u8FD0\u884C\u539F\u7406\u4E3A\u4FEE\u6539 APK \u5E76\u5C06 Hook \u8FDB\u7A0B\u6CE8\u5165\u5BBF\u4E3B\uFF0C\u901A\u8FC7\u5916\u90E8\u6A21\u5757\u5BF9\u5176\u8FDB\u884C\u63A7\u5236\u3002

\u53E6\u5916\u4E00\u79CD\u4EA7\u54C1\u5C31\u662F\u5229\u7528 Android \u8FD0\u884C\u73AF\u5883\u73B0\u6709\u7684\u529F\u80FD\u865A\u62DF\u51FA\u4E00\u4E2A\u5B8C\u5168\u4E0E\u5F53\u524D\u8BBE\u5907\u7CFB\u7EDF\u4E00\u6837\u7684\u73AF\u5883\uFF0C\u5E76\u5728\u5176\u4E2D\u8FD0\u884C APP\uFF0C\u8FD9\u4E2A\u5C31\u662F\u865A\u62DF APP \u6280\u672F VirtualApp\uFF0C\u540E\u6765\u884D\u751F\u4E3A VirtualXposed\u3002

`,23),i=e("\u4E0A\u8FF0\u63D0\u5230\u7684\u514D Root \u6846\u67B6\u5206\u522B\u4E3A "),h={href:"https://github.com/LSPosed/LSPatch",target:"_blank",rel:"noopener noreferrer"},_=e("LSPatch"),k=e("\u3001"),u={href:"https://taichi.cool/zh/",target:"_blank",rel:"noopener noreferrer"},g=e("\u592A\u6781"),b=e("\u3001"),A={href:"https://github.com/asLody/VirtualApp",target:"_blank",rel:"noopener noreferrer"},f=e("VirtualApp"),X=e("\u3001"),x={href:"https://github.com/asLody/SandVXposed",target:"_blank",rel:"noopener noreferrer"},P=e("SandVXposed"),m=e("\u3002"),y=a('

YukiHookAPI \u505A\u4E86\u4EC0\u4E48

\u81EA\u4ECE Xposed \u51FA\u73B0\u5230\u73B0\u5728\u4E3A\u6B62\uFF0C\u9664\u4E86\u5F00\u53D1\u8005\u4EBA\u4EBA\u7686\u77E5\u7684 XposedHelpers\uFF0C\u4F9D\u7136\u6CA1\u6709\u4E00\u5957\u9488\u5BF9 Kotlin \u6253\u9020\u7684\u8BED\u6CD5\u7CD6\u4EE5\u53CA\u7528\u6CD5\u5C01\u88C5\u5341\u5206\u5B8C\u5584\u7684 API\u3002

\u672C API \u6846\u67B6\u7684\u8BDE\u751F\u5C31\u662F\u5E0C\u671B\u5728 Xposed \u7684\u5982\u4ECA\u65F6\u4EE3\uFF0C\u80FD\u8BA9\u66F4\u591A\u6709\u52A8\u624B\u80FD\u529B\u7684 Xposed \u6A21\u5757\u5F00\u53D1\u8005\u5C11\u8D70\u5F2F\u8DEF\uFF0C\u66F4\u5BB9\u6613\u3001\u66F4\u7B80\u5355\u5730\u5B8C\u6210\u6574\u4E2A\u5F00\u53D1\u6D41\u7A0B\u3002

\u672A\u6765\uFF0CYukiHookAPI \u5C06\u5728\u4F7F\u7528 Xposed API \u7684\u76EE\u6807\u57FA\u7840\u4E0A\u9002\u914D\u66F4\u591A\u7B2C\u4E09\u65B9 Hook Framework\uFF0C\u4F7F\u5F97\u6574\u4E2A\u751F\u6001\u5F97\u5230\u5B8C\u5584\uFF0C\u5E76\u5E2E\u52A9\u66F4\u591A\u5F00\u53D1\u8005\u8BA9 Xposed \u6A21\u5757\u5F00\u53D1\u53D8\u5F97\u66F4\u52A0\u7B80\u5355\u548C\u6613\u61C2\u3002

\u8BA9\u6211\u4EEC\u5F00\u59CB\u5427

\u5728\u5F00\u59CB\u4E4B\u524D\uFF0C\u4F60\u9700\u8981\u62E5\u6709\u4EE5\u4E0B\u57FA\u7840\u624D\u80FD\u66F4\u597D\u5730\u4F7F\u7528 YukiHookAPI\u3002

',6),E=o("li",null,[o("p",null,"\u638C\u63E1\u5E76\u4E86\u89E3 Android \u5F00\u53D1\u53CA\u7B80\u5355\u7684\u7CFB\u7EDF\u8FD0\u884C\u539F\u7406")],-1),H=e("\u638C\u63E1\u5E76\u4E86\u89E3 Android APK \u5185\u90E8\u7ED3\u6784\u4EE5\u53CA\u7B80\u5355\u7684\u53CD\u7F16\u8BD1\u77E5\u8BC6\u8981\u9886\uFF0C\u53EF\u53C2\u8003 "),v={href:"https://github.com/skylot/jadx",target:"_blank",rel:"noopener noreferrer"},q=e("Jadx"),S=e(" \u4E0E "),I={href:"https://github.com/iBotPeaches/Apktool",target:"_blank",rel:"noopener noreferrer"},V=e("ApkTool"),B=o("li",null,[o("p",null,"\u638C\u63E1\u5E76\u719F\u7EC3\u4F7F\u7528 Java \u53CD\u5C04\uFF0C\u4E86\u89E3\u7B80\u5355\u7684 Smali \u8BED\u6CD5\uFF0C\u4E86\u89E3 DEX \u6587\u4EF6\u7ED3\u6784\uFF0C\u4F1A\u4F7F\u7528\u9006\u5411\u5206\u6790\u5B9A\u4F4D\u65B9\u6CD5\u4F4D\u7F6E")],-1),L=e("\u638C\u63E1\u57FA\u7840\u7684\u539F\u751F "),w={href:"https://api.xposed.info",target:"_blank",rel:"noopener noreferrer"},F=e("Xposed API"),K=e(" \u7528\u6CD5\uFF0C\u4E86\u89E3 Xposed \u7684\u8FD0\u884C\u539F\u7406\uFF0C\u53EF\u53C2\u8003\u672C\u6587\u4EE5\u53CA "),R={href:"https://blog.ketal.icu/cn/Xposed%E6%A8%A1%E5%9D%97%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8%E4%BF%9D%E5%A7%86%E7%BA%A7%E6%95%99%E7%A8%8B/",target:"_blank",rel:"noopener noreferrer"},D=e("\u8FD9\u91CC"),J=e(),N=o("strong",null,"(\u53CB\u60C5\u94FE\u63A5)",-1),T=e("\u638C\u63E1 Kotlin \u8BED\u8A00\uFF0C\u5B66\u4F1A\u7075\u6D3B\u8FD0\u7528 "),Y={href:"https://blog.ketal.icu/cn/kotlin-lambda%E5%85%A5%E9%97%A8/",target:"_blank",rel:"noopener noreferrer"},C=e("Kotlin lambda"),M=e(),j=o("strong",null,"(\u53CB\u60C5\u94FE\u63A5)",-1),z=o("li",null,[o("p",null,"\u638C\u63E1\u5E76\u4E86\u89E3 Kotlin \u4E0E Java \u6DF7\u7F16\u3001\u4E92\u76F8\u8C03\u7528\u4EE5\u53CA Kotlin \u751F\u6210\u7684 Java \u5B57\u8282\u7801")],-1);function U(Z,G){const s=r("ExternalLinkIcon");return p(),d("div",null,[c,o("p",null,[i,o("a",h,[_,n(s)]),k,o("a",u,[g,n(s)]),b,o("a",A,[f,n(s)]),X,o("a",x,[P,n(s)]),m]),y,o("ul",null,[E,o("li",null,[o("p",null,[H,o("a",v,[q,n(s)]),S,o("a",I,[V,n(s)])])]),B,o("li",null,[o("p",null,[L,o("a",w,[F,n(s)]),K,o("a",R,[D,n(s)]),J,N])]),o("li",null,[o("p",null,[T,o("a",Y,[C,n(s)]),M,j])]),z])])}const Q=t(l,[["render",U],["__file","knowledge.html.vue"]]);export{Q as default};