package Ġcom . sh ery ly nn . test Utils Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . TextView Ċ import Ġde . rob v . android . x posed .* Ċ Ċ import Ġjava . lang . reflect . Field Ċ Ċ import Ġde . rob v . android . x posed . callbacks . XC _ Load Package Ċ Ċ class ĠMain Hook Ġ: ĠIX posed Hook Load Package Ġ{ ĊĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠ Ġoverride Ġfun Ġhandle Load Package ( lp param : ĠX C _ Load Package . Load Package Param ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lp param . packageName Ġ== ĠBuild Config . APPLICATION _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity :: class . java . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp param . class Loader , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" toast Message ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX C _ Method Replacement . return Constant (" I Ġhad ĠHook ed !!!! ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( lp param . packageName Ġ== Ġ" com . tencent . mm ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhook Class Ġ= Ġ" com . tencent . mm . plugin . wallet . balance . ui . Wallet Balance Manager UI " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhook MethodName Ġ= Ġ" onCreate " ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( hook Class , Ġlp param . class Loader , Ġhook MethodName , ĠBundle :: class . java , Ġobject Ġ: ĠX C _ Method Hook () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter Hook ed Method ( param : ĠX C _ Method Hook . Method Hook Param ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet Balance Activity Ġ= Ġparam !!. this Object ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Field Ġ= Ġwallet Balance Activity . java Class . declared Fields ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġall Field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Object Ġ= Ġfield . get ( wallet Balance Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Object Ġ!= Ġnull Ġ&& Ġfield Object Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Object . add TextChanged Listener ( TextView Watcher 2 ( field Object )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Bridge . log ( field . name Ġ+ Ġ", Ġ" Ġ+ Ġfield Object . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTextView Watcher 2 ( private Ġval ĠtextView : ĠTextView ) Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġs . toString () ĊĠĠĠĠĠĠĠ ĠX posed Bridge . log (" textView åĨħå®¹ : Ġ$ text ") ĊĠĠĠĠĠĠĠ Ġif Ġ( text . contains (" Â ¥ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . remove TextChanged Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠLAST _ TEXT ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . add TextChanged Listener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLAST _ TEXT Ġ= Ġ" 2 0 0 0 0 0 . 0 0 " ĊĠĠĠ Ġ} Ċ } Ċ