吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1649|回复: 1
收起左侧

[Android 求助] xposed hook混淆后ssl证书加载的代码失败

[复制链接]
Se8s0n 发表于 2019-10-6 09:34
初学xposed工具,在hook sxxx社交app的ssl证书加载的函数失败。有两个问题请求解答:
1.如何判断ssl证书加载的函数在app运行的时候是被调用的,具体是在什么时候调用的?
2.因为代码经过了混淆,有多个a函数,如何判断自己hook成功了关键的a函数,或者说如何过滤掉其他a函数的干扰?

具体hook的代码如下:
package com.example.unlock;

import android.util.Log;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

public class HookMain implements IXposedHookLoadPackage {
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        if(!lpparam.packageName.equals("cn.sxxxapp.android")) 
        {
            return;
        }
        Log.i("Tiger_test","hook进入程序");
        //Hook a方法
        findAndHookMethod(
                "cn.soulapp.android.SoulNetworkSDK",  
                lpparam.classLoader,                   
                "a",                                  
                String.class,                          
                new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        Log.i("Tiger_test","hook开始");//方法的返回值只能放在afterHookedMethod中获取
                    }
                    protected void afterHookedMethod(MethodHookParam param)
                            throws Throwable {
                        Log.i("Tiger_test","a方法的返回值为:"+param.getResult());
                    }
                }
        );
    }
}


打开应用之后,输入手机号码,运行结果如下:
U9Q7MFF(ET})7S@VM9HY.png

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

 楼主| Se8s0n 发表于 2019-10-6 15:13
将代码改成try catch语句,尝试排除错误,代码如下:
[Java] 纯文本查看 复制代码
package com.example.unlock;

import android.util.Log;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

public class HookMain implements IXposedHookLoadPackage {
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        if(!lpparam.packageName.equals("cn.soulapp.android")) //过滤包名
        {
            return;
        }
        XposedBridge.log("Loaded app: " + lpparam.packageName);

        //Hook a方法
        try {
            Log.i("Tiger_test","hook进入程序");
            XposedHelpers.findAndHookMethod("cn.soulapp.android.SoulNetworkSDK", lpparam.classLoader, "a", String.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                    Log.i("Tiger_test","hook开始");
                }
                //方法执行后执行,改方法的返回值一定要在方法执行完毕后更改
                protected void afterHookedMethod(XC_MethodHook.MethodHookParam param)
                        throws Throwable {
                    //Log.i("Tiger_test","a方法的第一个参数为:"+param.args[0].toString());//param.args[0]为方法的第一个参数,同理param.args[1]为第二个参数
                    Log.i("Tiger_test","a方法的返回值为:"+param.getResult());//方法的返回值只能放在afterHookedMethod中获取
                }
            });
        } catch (Throwable e){
            XposedBridge.log("hook failed");
            XposedBridge.log(e);
        }
    }
}


找到的报错如下:
NRBSR_[%3OWMX2`2$]FML.png
BXA7CFA`AI2RR1PD3F1HE[6.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-27 11:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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