MOV EDX,[924E0C]
MOV EAX,[EDX+1C]
MOV ECX,[EAX+20]
MOV EDX,[ECX+0CB8]
push 0
push 1966347C
CALL 004722A0
//完美世界 经典版本
bp send,输入一段话,按回车
0012E2DC 005869B2 返回到 elementc.005869B2 来自 elementc.0058E8A0
0012E2F0 00588C4F 返回到 elementc.00588C4F 来自 elementc.00586980
0012E340 004B9025 返回到 elementc.004B9025 来自 elementc.00588B50
这个喊话头顶上有文字
别人看不见的
频道:普通,组队,世界,密语
//喊话CALL的下面有个人物名称 的偏移
004D0A10 8B4C24 1C MOV ECX,DWORD PTR SS:[ESP+1C] ; 堆栈 SS:[0012E758]=0012E900 普通ECX=0 组队ECX=1
004D0A14 55 PUSH EBP ; EBP=0
004D0A15 57 PUSH EDI ; EDI=2227FC8C, (UNICODE "oyear")
004D0A16 51 PUSH ECX ; ECX=0012E900
004D0A17 8BCB MOV ECX,EBX ; ECX=0012E900 ,EBX=06217088= dd [[0A94464]+20]
004D0A19 E8 E2681100 CALL elementc.005E7300
PUSH EBP ; EBP=0
PUSH EDI ; EDI=2227FC8C, (UNICODE "oyear") 喊话内容
PUSH ECX ; ECX=0012E900 喊话频道?
MOV ECX,EBX ; 堆栈 SS:[0012E758]=007CAA00 (elementc.007CAA00)
CALL 005E7300
普通
堆栈 SS:[0012E758]=007CAA00 (elementc.007CAA00)
ECX=00000000
组队
堆栈 SS:[0012E758]=007CAA02 (elementc.007CAA02)
ECX=00000001
世界
堆栈 SS:[0012E758]=F0DEAD00
ECX=00000000
push 0
push 2227FC8C
push 0012E900
mov eax,[0A94464]
mov eax,[eax+20]
mov ecx,eax
CALL 005E7300
普通=0
世界=1
组队=2
//完美国际
bp send 喊话 ctrl+F9返回4次 返汇编中跟随
push 0ffffffff
mov EAX,[0B3F6CC]
mov EAX,[EAX+20]
mov ecx,eax
push 0ffffffff
push 2CABACC4 //喊话内容
push 2 //频道
CALL 00685250
普通=0
世界=1
组队=2
//说明自己看不见 别人能看见
procedure sendMsg(s:pchar;ID:Integer);
var
calltxt:PWideChar;
speakCall:DWORD;
begin
callTxt:=allocmem(512); //把S字串的编码格式转成UNICODE存放在CallTxt里
stringToWideChar(s,calltxt,256);//Ascii码编码转换成UNICODE编码
speakCall:=$00685250;
asm
push $ffffffff
mov EAX,[MainBase]
mov EAX,[EAX+$20]
mov ecx,eax //这里不要动它
push $ffffffff
push callTxt {喊话内容地址}
push ID {普通频道=0,世界频道=1,组队频道=2}
CALL speakCall
end;
end;