吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 31140|回复: 42
上一主题 下一主题
收起左侧

[Android 原创] 用xposed绕过重签名后qq登录显示“非官方正版应用”的验证

  [复制链接]
跳转到指定楼层
楼主
z14mian 发表于 2019-1-21 22:42 回帖奖励
本帖最后由 z14mian 于 2019-1-22 10:01 编辑

一、前言
众所周知,如果一个app重新签名了之后,在调用qq进行第三方登录时,会显示“非官方正版应用”。

这就很令人难受了,卡在最后一步,的确会很让人抓狂。而且网上也貌似很少有这方面的教程(这让我等小白更抓狂了)。在一次机缘巧合下,看到了四哥的一篇文章:http://www.520monkey.com/archives/1009。四哥介绍了两种方式,一种是写xp插件,一种是直接改qq。改qq的话,一个是重编译麻烦,一个是只能自己用(毕竟别人也不敢随便用被改过的qq)。然后四哥说了一句话:写xp模块现在谁都会了,我们讲另一种好了。
Emmmmm
(⊙﹏⊙)
不!我不会!
于是就有了这篇帖子

二、分析
1. 在上面那个框出现的时候,用adbshell dumpsys activity top直接就能找到类名


2. 把qq安装包中的classes.dex拉出来,用jadx反编译软件打开,可以直接看到java代码。按照路径展开到目标位置,然后看代码。如图,日志已经出卖了你。

也就是说,这里的string a 就是app的签名md5值。我们只需要hook他就好了。先确认一下参数类型:instance是MessageDigest类,所以instance.digest()是byte[]类型(百度就有了)。

3. 按下ctrl,上面的HexUtil会变成可点。点过去。


4. 从页面最上的package可以看到类名com.tencent.mobileqq.utils。然后问题来了,这里有很多个a方法(因为被混淆过了),但是上面我们已经确定了参数是byte[],所以直接就能找到。

准备开搞

三、写xposed插件
1. 基础教程,可以看这里:https://blog.csdn.net/csdn_lqr/article/details/52245132

2. 开撸,代码如下
[Java] 纯文本查看 复制代码
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();
    }

}

加了原签名md5判断的原因是,这个方法并不是验证签名专用的,如果无条件直接返回自己的值,会影响程序的运行,以及其他的程序都没办法用qq登录了。

3. 写完后,打包安装xp框架打勾重启。启动修改过的第三方app,搞定,成功绕过



四、其他
因为只是hook了程序,没有涉及到hook系统和资源布局,所以这个模块还可以用于免root的virtualxposed框架。


萌新第一次发帖,各位大佬多多指教 (>▽<)

免费评分

参与人数 12吾爱币 +21 热心值 +11 收起 理由
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
oriwqz + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
huzhangqiang011 + 1 用心讨论,共获提升!
Vsir + 1 + 1 我很赞同!
草月花舍 + 1 + 1 谢谢@Thanks!
海天 + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
hunteraa + 1 + 1 微信可用吗?
bolipapadu + 1 + 1 谢谢@Thanks!
兔子我是胡萝卜 + 1 谢谢@Thanks!
瓜子吧3 + 3 + 1 这个是真的厉害,

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
推荐
Wise_58 发表于 2019-1-22 09:20
提示: 作者被禁止或删除 内容自动屏蔽
推荐
涛之雨 发表于 2019-1-28 21:02
所以。。。楼主有没有直接安装就行的办法。。。
总不至于出去装个逼还要给人家装一套框架吧(虽然vxp相对来说好多了)
3#
瓜子吧3 发表于 2019-1-21 23:07
4#
lei191650 发表于 2019-1-21 23:08
成品可以发出来测试一下最好了
5#
小泪痕 发表于 2019-1-22 00:11
看看学习一下 支持了
6#
可惜没如果i 发表于 2019-1-22 03:49

看看学习一下 支持了
7#
禽·兽 发表于 2019-1-22 06:37
虽然看的一脸懵逼但是小白还是表示下膜拜
8#
xudongchu 发表于 2019-1-22 08:02
谢谢您的分享!!!
9#
三号小学生 发表于 2019-1-22 09:05
感谢楼主分享
10#
z6810753 发表于 2019-1-22 09:23 来自手机
之前hook过这个地方,不过有问题,学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表