首页
社区
课程
招聘
4
[原创]PC微信发送消息研究(二)
发表于: 2018-5-9 14:28 7174

[原创]PC微信发送消息研究(二)

2018-5-9 14:28
7174

之前那种办法发送消息还是不太稳定很容易崩溃闪退

发个稳定的方式吧:

void sendMessage(const WCHAR * pwxid,const WCHAR * pmessage)
{
const WCHAR * writestring = (WCHAR *)pmessage;
int * p = (int*)((int)pWinImplBase+0xDEC);
VString * ptemp1 =  new VString;
memcpy(ptemp1,p,sizeof(VString));
wstring temp((WCHAR *)pwxid);
VString * pstring  = new VString;
pstring->pstting = (WCHAR*)temp.c_str();
pstring->size = temp.size();
pstring->lsize = temp.size();
memcpy(p,pstring,sizeof(VString));
void * psendwxid = nullptr;

__asm{
pushfd
pushad
mov  eax, pWinImplBase
mov ecx,dword ptr ds:[eax+0x9BC]
add ecx,0x9B0
lea eax,dword ptr ds:[ecx+0x14]
mov psendwxid,eax
popad
popfd
}

VString * ptemp2 =  new VString;
memcpy(ptemp2,psendwxid,sizeof(VString));
memcpy(psendwxid,pstring,sizeof(VString));
__asm{
pushfd
pushad
mov eax ,writestring
push eax
mov ecx,g_input_richedit
mov eax,[g_input_richedit]
mov eax,[eax]
call [eax+0x2C]
popad
popfd
}

__asm{
pushfd
pushad
mov ecx,pWinImplBase
call g_sendText
popad
popfd
}
//恢复数据
memcpy(p,ptemp1,sizeof(VString));
memcpy(psendwxid,ptemp2,sizeof(VString));

if (ptemp2)
{
delete ptemp2;
}
if (ptemp1)
{
delete ptemp1;
}
if (pstring)
{
delete pstring;
}
}
这种挂机比较稳定,不会出现奇奇怪怪的崩溃闪退,进一步可以优化掉 g_input_richedit 


void sendMessage(const WCHAR * pwxid,const WCHAR * pmessage)
{
const WCHAR * writestring = (WCHAR *)pmessage;
int * p = (int*)((int)pWinImplBase+0xDEC);
VString * ptemp1 =  new VString;
memcpy(ptemp1,p,sizeof(VString));
wstring temp((WCHAR *)pwxid);
VString * pstring  = new VString;
pstring->pstting = (WCHAR*)temp.c_str();
pstring->size = temp.size();
pstring->lsize = temp.size();
memcpy(p,pstring,sizeof(VString));
void * psendwxid = nullptr;

__asm{
pushfd
pushad
mov  eax, pWinImplBase
mov ecx,dword ptr ds:[eax+0x9BC]
add ecx,0x9B0
lea eax,dword ptr ds:[ecx+0x14]
mov psendwxid,eax
popad
popfd
}

VString * ptemp2 =  new VString;
memcpy(ptemp2,psendwxid,sizeof(VString));
memcpy(psendwxid,pstring,sizeof(VString));
__asm{
pushfd
pushad
mov eax ,writestring
push eax
mov ecx,g_input_richedit
mov eax,[g_input_richedit]
mov eax,[eax]
call [eax+0x2C]
popad
popfd
}

__asm{
pushfd
pushad
mov ecx,pWinImplBase
call g_sendText
popad
popfd
}
//恢复数据
memcpy(p,ptemp1,sizeof(VString));
memcpy(psendwxid,ptemp2,sizeof(VString));

if (ptemp2)
{
delete ptemp2;
}
if (ptemp1)
{
delete ptemp1;
}
if (pstring)
{
delete pstring;
}
}
void sendMessage(const WCHAR * pwxid,const WCHAR * pmessage)
{
const WCHAR * writestring = (WCHAR *)pmessage;
int * p = (int*)((int)pWinImplBase+0xDEC);
VString * ptemp1 =  new VString;
memcpy(ptemp1,p,sizeof(VString));
wstring temp((WCHAR *)pwxid);
VString * pstring  = new VString;
pstring->pstting = (WCHAR*)temp.c_str();
pstring->size = temp.size();
pstring->lsize = temp.size();
memcpy(p,pstring,sizeof(VString));
void * psendwxid = nullptr;

__asm{
pushfd
pushad
mov  eax, pWinImplBase
mov ecx,dword ptr ds:[eax+0x9BC]
add ecx,0x9B0
lea eax,dword ptr ds:[ecx+0x14]
mov psendwxid,eax
popad
popfd
}

VString * ptemp2 =  new VString;
memcpy(ptemp2,psendwxid,sizeof(VString));
memcpy(psendwxid,pstring,sizeof(VString));
__asm{
pushfd
pushad
mov eax ,writestring
push eax
mov ecx,g_input_richedit
mov eax,[g_input_richedit]
mov eax,[eax]
call [eax+0x2C]
popad
popfd
}

__asm{
pushfd
pushad
mov ecx,pWinImplBase
call g_sendText
popad
popfd
}
//恢复数据
memcpy(p,ptemp1,sizeof(VString));
memcpy(psendwxid,ptemp2,sizeof(VString));

if (ptemp2)
{
delete ptemp2;
}
if (ptemp1)
{
delete ptemp1;
}
if (pstring)
{
delete pstring;
}
void sendMessage(const WCHAR * pwxid,const WCHAR * pmessage)
{
const WCHAR * writestring = (WCHAR *)pmessage;
int * p = (int*)((int)pWinImplBase+0xDEC);
VString * ptemp1 =  new VString;
memcpy(ptemp1,p,sizeof(VString));
wstring temp((WCHAR *)pwxid);
VString * pstring  = new VString;
pstring->pstting = (WCHAR*)temp.c_str();
pstring->size = temp.size();
pstring->lsize = temp.size();
memcpy(p,pstring,sizeof(VString));
void * psendwxid = nullptr;

__asm{
pushfd
pushad
mov  eax, pWinImplBase
mov ecx,dword ptr ds:[eax+0x9BC]
add ecx,0x9B0
lea eax,dword ptr ds:[ecx+0x14]
mov psendwxid,eax
popad
popfd
}

VString * ptemp2 =  new VString;
memcpy(ptemp2,psendwxid,sizeof(VString));
memcpy(psendwxid,pstring,sizeof(VString));
__asm{
pushfd
pushad
mov eax ,writestring

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费 4
支持
分享
赞赏记录
参与人
雪币
留言
时间
心游尘世外
感谢你的贡献,论坛因你而更加精彩!
2025-2-9 04:03
飘零丶
为你点赞!
2024-9-30 06:20
shinratensei
为你点赞!
2024-9-27 02:07
PLEBFE
为你点赞~
2023-2-5 05:00
最新回复 (4)
雪    币: 15
活跃值: (280)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢!又见更新。
2018-5-10 12:26
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
nice!!!!!!!!
2018-5-10 13:39
0
雪    币: 22
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
very  good!
2018-5-10 14:18
0
雪    币: 232
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
怎么能和你对话!哈哈
2022-8-12 17:15
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册