• 企业微信HOOK逆向(sdk)——登录二维码api


    一、逆向分析
    1、打开企业微信,如果自动登录需要先退出登录,再次代开停留在二维码扫码登录界面。附加到OD中。用手机扫描二维码,在OD的KERNELBASE.CreateFileW下断点,手机点击取消登录。这时二维码会获取一个最新的,并且保存到本地,在CreateFileW断点处观察入参是否是图片,如果不是继续F9,直到入参是一个jpg图片
     
    2、Alt+F9运行到用户代码,一步步走找一个容易取到图片路径的合适的位置,用来下HOOK
     
    二、编写代码
     
    void WINAPI CallBack_WechatLogin(unsigned int nObject)
    {
    __try
    {
    if ((0 == nObject))
    {
    return;
    }
     
    wchar_t* pImgBuf = (wchar_t*)(nObject);
     
    if ((NULL == pImgBuf))
    {
    return;
    }
     
    rapidjson::StringBuffer strBuf;
    rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
     
    writer.StartObject();
     
    writer.Key("data");
    writer.StartObject();
    writer.Key("file");
    char* filedt = UnicodeToUtf8(pImgBuf);
    writer.String(filedt);
    writer.EndObject();
     
    writer.Key("type");
    writer.Uint(MT_MSG_LOGIN_QRCODE);
    writer.EndObject();
     
    BackReturn(strBuf.GetString());//回调
     
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {
     
    }
    }
     
    __declspec(naked) void My_WechatLogin()
    {
    __asm
    {
    pushad
    pushfd
     
    push[ebp - 0x28]
    call dword ptr CallBack_WechatLogin
     
    popfd
    popad
     
    lea eax, [ebp - 0xF0]
     
    jmp dword ptr CLogin::m_nJmpAddress
    }
    }
     
    调用hook语句
    Hook("WXWork.dll", 0x2E012B6, (unsigned int)My_WechatLogin, &m_nJmpAddress);
     
     
    目前已实现大部分功能
    接收和发送各种类型消息、群管理、加好友、自动进群、群发、群群发等
    支持多开并记录上次登录状态(避免重复扫码),可提供接口,方便各种语言二次开发,欢迎技术交流。
    qq:1031694913
  • 相关阅读:
    C#不引用IWshRuntimeLibrary获取快捷方式目标位置
    chrome插件
    禁用右键菜单
    自定义创建右键菜单项目
    Win10怀旧--win7体验
    Win10隐藏托盘图标-注册表
    一些软件下载地址
    Win10锁屏与关机相关设置-注册表
    Winform开发中的窗体重复及灵活切换问题
    Winform开发中如何将数据库字段绑定到ComboBox控件
  • 原文地址:https://www.cnblogs.com/cnzryblog/p/16016850.html
Copyright © 2020-2023  润新知