/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGreen ĠM ush room Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġme . gm . clean er . plugin . x posed Ċ Ċ import Ġandroid . content . Content Provider Ċ import Ġandroid . content . res . Asset Manager Ċ import Ġandroid . content . res . Resources Ċ import Ġde . rob v . android . x posed .* Ċ import Ġde . rob v . android . x posed . callbacks . XC _ Load Package . Load Package Param Ċ import Ġme . gm . clean er . plugin . x posed . hook er . Delete Hook er Ċ import Ġme . gm . clean er . plugin . x posed . hook er . File Hook er Ċ import Ġme . gm . clean er . plugin . x posed . hook er . Insert Hook er Ċ import Ġme . gm . clean er . plugin . x posed . hook er . Query Hook er Ċ import Ġjava . io . File Ċ Ċ class ĠX posed Init Ġ: ĠManager Service (), ĠIX posed Hook Load Package , ĠIX posed Hook Z yg ote Init Ġ{ ĊĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠ Ġoverride Ġfun Ġhandle Load Package ( lp param : ĠLoad Package Param ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclass Loader Ġ= Ġlp param . class Loader ĊĠĠĠĠĠĠĠ Ġwhen Ġ( lp param . packageName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . providers . media ", Ġ" com . android . providers . media . module " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Provider Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find Class ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . providers . media . Media Provider ", Ġclass Loader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠX posed Helpers . Class NotFoundError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Provider , Ġ" onCreate ", Ġobject Ġ: ĠX C _ Method Hook () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore Hook ed Method ( param : ĠMethod Hook Param ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonCreate (( param . this Object Ġas ĠContent Provider ). context !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook All Methods ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Provider , Ġ" query Internal ", ĠQuery Hook er ( this @ X posed Init ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook All Methods ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Provider , Ġ" insert Internal ", ĠInsert Hook er ( this @ X posed Init ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . hook All Methods ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Provider , Ġ" delete Internal ", ĠDelete Hook er ( this @ X posed Init ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method (" com . android . providers . media . scan . Mod ern Media Scanner ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Loader , Ġ" scan File ", ĠFile :: class . java , ĠInt :: class . java , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class . java , Ġobject Ġ: ĠX C _ Method Hook () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore Hook ed Method ( param : ĠMethod Hook Param ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġparam . args [ 0 ] Ġas ĠFile Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . log ( file . path ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . android . providers . downloads " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( File :: class . java , Ġ" createNew File ", ĠFile Hook er ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( File :: class . java , Ġ" mkdir ", ĠFile Hook er ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( File :: class . java , Ġ" mkdir s ", ĠFile Hook er ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠ Ġoverride Ġfun Ġinit Z yg ote ( startup Param : ĠIX posed Hook Z yg ote Init . Startup Param ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Manager Ġ= ĠAsset Manager :: class . java . newInstance () ĊĠĠĠĠĠĠĠ ĠX posed Helpers . call Method ( asset Manager , Ġ" add Asset Path ", Ġstartup Param . module Path ) ĊĠĠĠĠĠĠĠ Ġresources Ġ= ĠResources ( asset Manager , Ġnull , Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ