当前位置: 首页 > news >正文

PC企业微信HOOK / iPad企业微信协议最新版研究

前言

        企业微信在群发消息、批量添加好友等场景中,难以满足企业诉求,所以,某些企业便对企业微信进行hook,以实现企业的批量处理需求。本人对hook的原理及方案进行了分析,目前在PC版的HOOK和 iPad版的协议研究上颇有心得,咱们一起来看一下吧。

研究成果

        目前本人选择的PC企业微信版本是 4.1.32.6005,通过IDA Pro 和 CE 等工具,已经完成消息收发 / 搜索、增删好友 / 联系人获取、查询信息、设置备注 / 群操作 / 收发朋友圈等功能,基本满足企业的业务要求。

        在iPad版本上,本人选择的企微版本也是4.1.32.6005,通过 Frida、LLDB 等工具实现了与 PC 企微类似的功能,相比 PC 版,iPad更加灵活,轻量级,适合大规模群控场景的业务需求。

 

代码展示

PC 企业微信hook
	// Receive Message
	weworkHookModule->add(
		{
			0x42AB046,
			StdHookCallBeginStageHandler<0x3111111, 0x3555555>,
			[this](DWORD ebp, DWORD esp)
			{
				auto pRecvMsg = DPUInt(esp, 0x1C) - 0x10; 
				this->customHandleReceiveMessage(pRecvMsg);
			}
		}
	);

	// Send Message
	weworkHookModule->add(
		{
			0x1111111,
			StdHookCallBeginStageHandler<0x1444444, 0x1888888>,
			[this](DWORD ebp, DWORD esp)
			{
				auto pSendMsg = DPUInt(ebp, 0x8, 0x0, 0xD0, 0x3C);
				auto pMsgPackage = DPUInt(esp, 0x8, 0x34); 
				auto msgID = *reinterpret_cast<UINT64 *>(DPUInt(esp, 0x8, 0xC)); 
				this->customHandleSendMessage(pSendMsg, pMsgPackage, msgID);
			}
		}
	);
 iPad 协议
void Client::sendCgiRequest(const std::string& syncKey, int32 businessCmd, const RequestConfig& config, const std::string& reqData, ResponseHandler fn)
{
	auto rawResponseHandler = [syncKey, businessCmd, fn, this](bool result, const std::string& data)
	{
		// inner cgi request
		if (businessCmd == 0) {
			return;
		}

		json_t notifyData;
		if (result) {
			WWResponse rsp;
			rsp.ParseFromString(data);

			if (rsp.base().error_code() == 0) {
				if (fn) {
					fn(rsp.body());
				} else {
					sendDataNotify(m_id, businessCmd, E_SUCCESS, syncKey, notifyData);
				}
			} else {
				notifyData["error_code"] = rsp.base().error_code();
				notifyData["error_msg"] = BASE64_ENC(rsp.base().error_message());
				sendDataNotify(m_id, businessCmd, E_REQUEST_ERROR, syncKey, notifyData);
			}
		} else {
			notifyData["error_msg"] = BASE64_ENC(data);
			sendDataNotify(m_id, businessCmd, E_UNKNOW_ERROR, syncKey, notifyData);
		}
	};

	sendCgiRequest(config, reqData, rawResponseHandler);
}

 

最后

        随着AI时代的到来,技术变革与产业逻辑重构对企业发展既是前所未有的挑战,也是重塑竞争优势的历史机遇。以AI为引擎,以脚本技术为骨架,推构建人机协同新生态,将重复性劳动交予智能系统,专注于价值创造,在个性化需求爆发时代打造差异化服务护城河。
 

// contact information

{
    char QQ[] = "3837713198";
    char qq[] = "3837713198";
}

相关文章:

  • 神经网络量化2-pytorch测试动态量化
  • FPGA-流水灯
  • vulhub/joker 靶机----练习攻略
  • 基于Java(Springboot+Gradle+Mybatis+templeaf 框架)+Mysql构建的(Web)校园二手平台系统
  • on-policy对比off-policy
  • 微服务的网关配置
  • 厨卫行业供应链产销协同前中后大平台现状需求分析报告+P120(120页PPT)(文末有下载方式)
  • Java面试黄金宝典2
  • LeetCode BFS解决FloodFill算法
  • 无需刷机、root,畅享原生安卓的丝滑体验。
  • 智能提示语链分析平台技术解析
  • 动态库、静态库、导入库
  • 人事档案管理系统基于Spring BootSSM
  • 268.数组美丽值求和
  • 【C++】函数next_permutation
  • 生成式AI红队测试:如何有效评估大语言模型
  • 基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现
  • zabbix统计闲置资产
  • HTML课后实践
  • 代码随想录 Day 45 | 【第九章 动态规划part 08】121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
  • 戛纳打破“疑罪从无”惯例,一法国男演员被拒之门外
  • 上海虹桥国际咖啡文化节开幕,推出茶咖文化特色街区、宝妈咖啡师培训
  • 为什么越来越多景区,把C位留给了书店?
  • 普京确定俄乌谈判俄方代表团名单
  • 商务部新闻发言人就暂停17家美国实体不可靠实体清单措施答记者问
  • 外交部:各方应为俄乌双方恢复直接对话创造条件