package
com.cy.qq;
import
android.app.AndroidAppHelper;
import
de.robv.android.xposed.IXposedHookLoadPackage;
import
de.robv.android.xposed.XC_MethodHook;
import
de.robv.android.xposed.XposedBridge;
import
de.robv.android.xposed.XposedHelpers;
import
de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public
class
hook
implements
IXposedHookLoadPackage {
public
void
handleLoadPackage(LoadPackageParam lpparam)
throws
Throwable {
if
(!lpparam.packageName.contains(
"com.tencent.mobileqq"
))
return
;
XposedHelpers.findAndHookMethod(
"com.tencent.mobileqq.utils.HexUtil"
, lpparam.classLoader,
"a"
,
byte
[].
class
,
new
XC_MethodHook() {
protected
void
beforeHookedMethod(MethodHookParam param)
throws
Throwable {
super
.beforeHookedMethod(param);
}
protected
void
afterHookedMethod(MethodHookParam param)
throws
Throwable {
super
.afterHookedMethod(param);
byte
[] signatures = (
byte
[]) param.args[
0
];
String sign = bytesToHex(signatures);
XposedBridge.log(
"输出 ------------- "
+ sign);
AndroidAppHelper.currentApplication();
if
(sign.equals(
"自己app签名md5"
)) {
String result=
"正版签名md5"
;
param.setResult(result);
}
}
});
}
public
static
String bytesToHex(
byte
[] bytes) {
StringBuffer sb =
new
StringBuffer();
for
(
byte
b : bytes) {
String hex = Integer.toHexString(b &
255
);
if
(hex.length() <
2
) {
sb.append(
0
);
}
sb.append(hex);
}
return
sb.toString();
}
}