|
10精币
微信WeChatWin.dll版本3.2.1.154 发送文本call的写法,用易语言实现,我写的一发送程序就直接挂了call地址偏移:3B63B0
6148CCEB | 6A 01 | push 1 |
6148CCED | 57 | push edi |
6148CCEE | 53 | push ebx |
6148CCEF | 8D95 78FFFFFF | lea edx,dword ptr ss:[ebp-88] |
6148CCF5 | 8D8D 58FAFFFF | lea ecx,dword ptr ss:[ebp-5A8] |
6148CCFB | E8 B0962A00 | call wechatwin.617363B0 |
6148CD00 | 83C4 0C | add esp,C |
易语言代码:
.版本 2
.支持库 spec
.局部变量 Calladd, 整数型, , , call的地址
.局部变量 Wxid, 整数型, , , wxid内存地址
.局部变量 Wxidp, 整数型, , , wxid内存指针地址
.局部变量 Meg, 整数型, , , 消息内存地址
.局部变量 Megp, 整数型, , , 消息内存指针地址
.局部变量 Buff, 整数型, , , ecx缓存区内存地址
.局部变量 Buff1, 整数型, , , edi结构体缓存区内存地址
.如果真 (ID = { } 或 Messg = { })
返回 ()
.如果真结束
Calladd = 基址 + 十六进制 (“3B63B0”)
Wxid = 申请内存 (1024, 真)
写到内存 (ID, Wxid, 取字节集长度 (ID))
Wxidp = 申请内存 (1024, 真)
写到内存 (Wxid, Wxidp, 4)
写到内存 (取文本长度 (编码_Unicode到Ansi (ID)), Wxidp + 4, 4)
写到内存 (取文本长度 (编码_Unicode到Ansi (ID)) × 2, Wxidp + 8, 4)
Meg = 申请内存 (5012, 真)
写到内存 (Messg, Meg, 取字节集长度 (Messg))
Megp = 申请内存 (1024, 真)
写到内存 (Meg, Megp, 4)
写到内存 (取文本长度 (编码_Unicode到Ansi (Messg)), Megp + 4, 4)
写到内存 (取文本长度 (编码_Unicode到Ansi (Messg)) × 2, Megp + 8, 4)
Buff = 申请内存 (十六进制 (“5A8”), 真)
Buff1 = 申请内存 (1024, 真)
置入代码 ({ 96, 106, 1, 191, 0, 0, 0, 0, 87, 139, 93, 236, 83, 139, 85, 248, 139, 77, 232, 255, 85, 252, 131, 196, 12, 97 })
释放内存 (Wxid)
释放内存 (Wxidp)
释放内存 (Meg)
释放内存 (Megp)
释放内存 (Buff)
释放内存 (Buff1)
汇编代码:
变量 Calladd
变量 Wxid
变量 Wxidp
变量 Meg
变量 Megp
变量 Buff
变量 Buff1
pushad
push 0x1
mov edi,[Buff1]
push edi
mov ebx,[Megp]
push ebx
mov edx,[Wxid]
mov ecx,[Buff]
call [Calladd]
add esp,0xC
popad
机器码:{96,106,1,139,125,228,87,139,93,236,83,139,85,248,139,77,232,255,85,252,131,196,12,97}
mov edx,[Wxid]
mov ecx,[Buff]
这个地方mov指令换成lea也试过还是不行!
|
最佳答案
查看完整内容
变量 Wxid 变量 Wxidp 变量 Meg 变量 Megp 变量 Buff 变量 Calladd pushad push 0x1 push 0x0 mov ebx,[Megp] push ebx mov edx,[wxidp] mov ecx, call [calladd] add esp,0xC popad { 96, 106, 1, 106, 0, 139, 93, 240, 83, 139, 85, 248, 139, 77, 236, 255, 85, 232, 131, 196, 12, 97 }
|