史上最全面 Android逆向培训之__实战(hook微信)

元气小坏坏 提交于 2019-11-27 10:37:09

 


 

我的CSDN博客:https://blog.csdn.net/gfg156196   by--qihao


 

书接上文,上回说到了xposed,接下来就用一下,体验一下商业项目的赶脚……

上一篇:史上最全面 Android逆向培训之__Xposed使用
接下来以hook微信官网最新版本7.0.6版本为例。可以去微信官网下载。

首先咱们解开微信的源码,使用jadx看一下,微信其实是一个超级庞大的工程。

咱们就hook顶部的加号和搜索🔍。(本教程只供学习xposed使用,不可作为商用。否则后果自负。)

《写给新手入职的培训资料》-- by 齐浩 2019/8/13 19:29

我们先找到 com.tencent.mm.ui.LauncherUI 类里的 onCreateOptionsMenu 方法。
仔细分析代码

 



方法内部看清楚了吧……接下来咱们就hook这个方法。

XposedHelpers.findAndHookMethod("com.tencent.mm.ui.LauncherUI", mClassLoader, "onCreateOptionsMenu", Menu.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(final MethodHookParam methodHookParam) throws Throwable {
super.afterHookedMethod(methodHookParam);
Log.i("Hook", "====com.tencent.mm.ui.LauncherUI onCreateOptionsMenu====");

Object objectField =XposedHelpers.getObjectField(methodHookParam.thisObject, WxConstant.GETCLASS_LAUNCHERUI_FIELD_XPU);
View zIg = (View) XposedHelpers.getObjectField(objectField, "zIg");
View zEs = (View) XposedHelpers.getObjectField(objectField, "zEs");
Log.d("是否为空 = " + zIg + ", zEs= " + zEs);
zIg.setOnClickListener(v -> {
/** 这个是当前Activity的上下文 */
Context context = (Context) methodHookParam.thisObject;
Log.i("Hook", "正在初始化...");
Toast.makeText(context, "正在初始化请等待......", Toast.LENGTH_SHORT).show();
});
zEs.setOnClickListener(v->Log.d("hook","我是搜索按钮 🔍"));
}
});

hook就必须使用 ClassLoader,类加载机制,用反射的思想去理解它就好了……很简单。

public class XhookEntry implements IXposedHookLoadPackage {

/**
* hook拦截入口
* @param loadPackageParam
*/
@Override
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) {

try {
final String pkgName = loadPackageParam.packageName;
//hook 微信进程
if (loadPackageParam.processName.equals("com.tencent.mm")) {
ClassLoader classLoader = loadPackageParam.classLoader;
// 有了classLoader,接下来就可以做其他的hook操作了

//…………
}
} catch (Exception e) {
e.printStackTrace();
}
}

 


最后记住一句话,凡是hook,必须 try……catch……
今天牛刀小试了一下,多练习,多看别人的源码,xposed没啥难度……有问题可以私聊我……
所有项目源码,持续更新:https://github.com/yugu88/MagicWX
熬夜写教程不容易,如果你欣赏我的代码,可以赞赏我几块钱买个新键盘。



一个简单的工具箱,新手还是很友好的,当然功能 low 了点……大部分小工具都有,需要的可以跟我要链接。

 


 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!