package
me.zpp0196.ss.xpatch;
import
android.content.Context;
import
android.util.Log;
import
de.robv.android.xposed.IXposedHookLoadPackage;
import
de.robv.android.xposed.XC_MethodReplacement;
import
de.robv.android.xposed.XposedHelpers;
import
de.robv.android.xposed.callbacks.XC_LoadPackage;
/**
* Created by zpp0196 on 2018/1/8.
*/
public
class
Hook
implements
IXposedHookLoadPackage{
@Override
public
void
handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam)
throws
Throwable{
if
(!lpparam.packageName.equals(
"com.ss.android.ugc.aweme"
)){
return
;
}
findAndHookMethod(
"com.ss.android.ugc.aweme.app.i"
, lpparam.classLoader,
"a"
,
new
XC_MethodReplacement(){
@Override
protected
Object replaceHookedMethod(MethodHookParam param)
throws
Throwable{
logI(
"com.ss.android.ugc.aweme.app.i.a()"
);
return
false
;
}
});
findAndHookMethod(
"com.ss.android.ugc.aweme.app.i"
, lpparam.classLoader,
"a"
, Context.
class
,
new
XC_MethodReplacement(){
@Override
protected
Object replaceHookedMethod(MethodHookParam param)
throws
Throwable{
logI(
"com.ss.android.ugc.aweme.app.i.a(Context param)"
);
return
false
;
}
});
findAndHookMethod(
"com.ss.android.ugc.aweme.app.i"
, lpparam.classLoader,
"b"
,
new
XC_MethodReplacement(){
@Override
protected
Object replaceHookedMethod(MethodHookParam param)
throws
Throwable{
logI(
"com.ss.android.ugc.aweme.app.i.b()"
);
return
false
;
}
});
findAndHookMethod(
"com.ss.android.ugc.aweme.app.i"
, lpparam.classLoader,
"b"
, Context.
class
,
new
XC_MethodReplacement(){
@Override
protected
Object replaceHookedMethod(MethodHookParam param)
throws
Throwable{
logI(
"com.ss.android.ugc.aweme.app.i.b(Context param)"
);
return
false
;
}
});
}
private
void
findAndHookMethod(String p1, ClassLoader lpparam, String p2, Object... parameterTypesAndCallback){
try
{
XposedHelpers.findAndHookMethod(p1, lpparam, p2, parameterTypesAndCallback);
}
catch
(Throwable throwable){
logE(throwable.getMessage());
}
}
private
void
logI(String msg){
if
(BuildConfig.DEBUG)
Log.i(getTAG(), msg);
}
private
void
logE(String msg){
if
(BuildConfig.DEBUG)
Log.e(getTAG(), msg);
}
private
String getTAG(){
return
getClass().getSimpleName();
}
}