Java可以hook微信吗,【第一篇】【安卓微信】HOOK微信发消息,当HOOK遇上HOOK。
前人栽树,后人吃桃。准备入坑 安卓 xposed hook 微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子、计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信)。微信 apk都60多M了,总不能反编译后全部取看一边一点一点的摸索吧,那样的话对于我来说简直就是惨绝人寰,这种事情别人肯定是做过的,于是乎,又用上了搜索功能满世界的查找。微控工具xp模块-开发版[微信(wech
前人栽树,后人吃桃。
准备入坑 安卓 xposed hook 微信(及时通信),好吧,第一步当然是论坛里面搜索啦,像掷骰子、计步器什么的都是小孩子过家家入门级别的,当然是要搞就搞(及时通信)。微信 apk都60多M了,总不能反编译后全部取看一边一点一点的摸索吧,那样的话对于我来说简直就是惨绝人寰,这种事情别人肯定是做过的,于是乎,又用上了搜索功能满世界的查找。
微控工具xp模块-开发版[微信(wechat)二次开发模块]
付费入群,高级功能要钱,这不符合我的原则。这不符合我的原则。对不住只能XX了。
一不小心就找到了这个xp模块,我想作者会恨我。作者绝对会恨我的。我下载了大的模块,大致的用 jeb2.0 看了一下,好像似乎大部分hook方法都写在native里面了。应该是 libwtool.so 里面了吧,怎么办好捉急呀。呀!忽然灵光一闪。不对呀~,Xposed 只能 hook java应用层,那么问题来了,他把核心代码放到native里面,到头来还是要调用:
XposedHelpers.findClass
XposedHelpers.findAndHookMethod
XposedHelpers.findAndHookConstructor
XposedHelpers....
那么我们只要把xposed 的 XposedHelpers 类 hook 起来,就可以知道原作者调用了微信的那些api,配合反编译的微信分析 api 相关的功能。当然 自己hook也是必不可少的。这样下来至少可以节约 1 个月的工作量。
当hook遇上hook,神奇的事情即将发生。
当下全网都找思域,那么接下来就得用我们吉利美人豹(cydia substrate 老掉牙,停产,不更新)对战 十代思域(Xposed)了。
findClass hook 源码:
MS.hookClassLoad("de.robv.android.xposed.XposedHelpers", new MS.ClassLoadHook() {
public void classLoaded(Class> clazz) {
Log.w(TAG, "classLoaded: " + clazz.getName());
Method[] methods = clazz.getMethods();
for (final Method method : methods) {
MS.hookMethod(clazz,method,new MS.MethodAlteration(){
@Override
public Object invoked(Object thiz, Object... args) throws Throwable {
if ("findClass".equals(method.getName())){
//public static Class> findClass(String className, ClassLoader classLoader)
Log.w(TAG, "findClass: "+ args[0]);
}
return invoke(thiz, args);
}
});
}
}
});
logcat:
W/wechat: initialize
W/wechat: classLoaded: de.robv.android.xposed.XposedHelpers
W/wechat: findClass: android.app.ActivityThread.AppBindData
W/wechat: findClass: com.android.server.ServerThread
W/wechat: findClass: android.app.ApplicationPackageManager
W/wechat: findClass: android.app.ActivityThread$ResourcesKey
W/wechat: findClass: android.app.ActivityThread$ResourcesKey
W/wechat: findClass: android.app.ActivityThread$ResourcesKey
W/wechat: findClass: android.app.ActivityThread$ResourcesKey
W/wechat: findClass: android.app.ActivityThread
W/wechat: findClass: android.app.ActivityThread
W/wechat: findClass: android.app.ActivityThread
W/wechat: findClass: com.tencent.mm.app.Application
W/wechat: findClass: com.tencent.tinker.loader.app.TinkerApplication
W/wechat: findClass: android.app.ActivityThread$ResourcesKey
W/wechat: findClass: com.tencent.smtt.sdk.WebSettings
W/wechat: findClass: com.tencent.mm.pluginsdk.ui.tools.s
W/wechat: findClass: java.lang.String
W/wechat: findClass: java.lang.String
W/wechat: findClass: java.lang.String
W/wechat: findClass: java.lang.String
W/wechat: findClass: java.util.HashMap
W/wechat: findClass: com.tencent.mm.bg.g
W/wechat: findClass: java.lang.String
W/wechat: findClass: java.util.HashMap
W/wechat: findClass: com.tencent.mm.bg.g
W/wechat: findClass: com.tencent.mmdb.database.SQLiteDatabase
....
总结以及后续
大概的一个思路就是这样的了,我们还可以加上 findmethod callmethod hook 进行更加详细的分析,以后在慢慢的分析具体的功能吧,我也会做一些重点笔记同步到论坛。希望大家支持哦。还有原作者真心对不住了,把核心的api都用c++ 写我也知道很累人。但是我不借鉴分析的话也很累人呀!
连续3篇精华了,这篇会上么?
更多推荐
所有评论(0)