首页 > 应用开发 > IT综合 > 企业微信PC版hook源码api接口
通过hookPC 企微内存调用函数,实现各种方便的功能,支持各种开发语言调用,现已实现的功能:
发各种消息,
接收各种消息,外部群内部群管理,手机号加好友,名片加好友,标签管理,开放平台openid 和用户id 互相转换打通官方人员管理 等等功能,无限更新中…
部分c++ 代码示例:
void __declspec ( naked ) ShowImg()
{
// 备份寄存器
__asm pushmdad;
__asm pushwdfd;
// 取出ecx的内容
__asm mov pEcx, ecx;
SaveImg(pEcx);
// 恢复寄存器
__asm pushwdfd;
__asm pushmdad;
// 跳转到返回地址
__asm jmp dwRetAddr;
}
void SaveImg( DWORD qrcode )
{
// 获取图片长度
DWORD dwPicLen = qrcode + 0x4;
size_t cpyLen = ( size_t )*(( LPVOID *)dwPicLen);
// 拷贝图片的数据
char PicData[0xFFF] = { 0 };
memcpy(PicData, *(( LPVOID *) qrcode ), cpyLen);
char szTempPath[ MAX_PATH ] = { 0 };
char szPicturePath[ MAX_PATH ] = { 0 };
GetTempPathA( MAX_PATH , szTempPath);
sprintf_s(szPicturePath, "%s%s" , szTempPath, "qrcode.png" );
// 将文件写到Temp目录下
HANDLE hFile = CreateFileA(szPicturePath, GENERIC_ALL , 0, NULL , CREATE_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL );
if (hFile == NULL )
{
MessageBoxA( NULL , " 创建图片文件失败" , " 错误" , 0);
return ;
}
DWORD dwRead = 0;
if (WriteFile(hFile, PicData, cpyLen, &dwRead, NULL ) == 0)
{
MessageBoxA( NULL , " 写入图片文件失败" , " 错误" , 0);
return ;
}
CloseHandle(hFile);
// 完成之后卸载HOOK
UnHookQrCode( QrCodeOffset );
}
需的可联:
HWND Qq[]= “ 2645542961 ” ;
wchar_t tempbuff[0x1030];
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70011763/viewspace-2856511/ ,如需转载,请注明出处,否则将追究法律责任。