地图名称偏移

找到个地图的边缘 ,2个地名相互切换的地方比如这个地方可以 422,851,22  
地图名称偏移_第1张图片
 
地图名称偏移_第2张图片
 
使用工具把地图名称转换成UNICODE
地图名称偏移_第3张图片
鹏程客栈
4F 9E 0B 7A A2 5B 08 68
剑仙城郊外
51 52 D9 4E CE 57 CA 90 16 59 0D 00 0A 00
CE搜索类型 array of byte
地图名称偏移_第4张图片
能搜索20多个 判断方法:
通过修改 数值 看游戏里的地图名称是否改变了 改变了正确
 
通过右键查找 能找到地图名称的基址
 // =
地图名称=[[[[[b3f6cc]+1c]+1c]+60]+4]+0
 
地图名称偏移_第5张图片
 
地图名称偏移_第6张图片
地图名称偏移_第7张图片
 
改变名称 就对
地图名称=[[[[[b3f6cc]+1c]+1c]+60]+4]+0
这 个地图名称的数值写入
 
感谢 Written by GustFox    QQ:309140945 提供的教程
 
大概就是找到写屏操作的CALL 找法:
写屏是先读取地图名, 然后在写在屏幕上面, 所以我们只要对地图名的内存地
址下内存读取断点, 跑到另外一张地图游戏自动断下, 现在我们按CTRL+F9往回
找, 或者直接ALT+K观察堆栈我们一个CALL 一个CALL 的排除发现
push esi    //一个指针, 指向一个数据结构,地图名字就是其里面的一个结构体
mov ecx,eax    //EAX也是一个参数,往上跟一下就能跟踪出来源
call 0053D830
EAX往上跟一下就出来了:
mov ecx,dword ptr[$A3E018]
mov ecx,dword ptr[ecx+$1C]
mov ecx,dword ptr[ecx+$4]
mov eax,dword ptr[ecx+$8]
ESI 指向的内容:对PUSH ESI 下断, 断下后观察ESI 指向的值:
 
可以看出来1C FE 6B 0A    CC FE 6B 0A 是地图名的UNICODE编码大概是这么
一个结构体
Struct SayInfo
{
    DWORD Say1=0x0095D4E0;
    DWORD Say2=0x0952696C;
    DWORD Say3=0x0095D4F0;
    DWORD Say4=0x0094AA38;
    DWORD Say5=0x0;
    DWORD Say6=0x0;
    DWORD Say7=0x0;
    DWORD Say8=0x10;
    Widechar* SayValue=” GustFox 的写屏测试!”;
}
大概就是这么一个意思, 当然可能有点语法错误.
喜欢DELPHI 的朋友也可以看下面的代码:
首先定义数据结构:
type
        screensay=record
        Say1:dword;
        Say2:dword;
        Say3:dword;
        Say4:dword;
        Say5:dword;
        Say6:dword;
        Say7:dword;
Say8:dword;
SayValue:dword;
    end;
将我们的窗体注入游戏进程
procedure TForm1.Button4Click(Sender: TObject);
var
    myscreensay:screensay;
    saystr:pwidechar;
    addr,addrc:pointer;
begin
saystr:=pwidechar(widestring('GustFox 的写屏测试!'));//写屏的内容
myscreensay.Say1:= $0095D4E0;
myscreensay.Say2:=$0952696C;
myscreensay.Say3:=$0095D4F0;
myscreensay.Say4:=$0094AA38;
myscreensay.Say5:=$0;
myscreensay.Say6:=$0;
myscreensay.Say7:=$0;
myscreensay.Say8:=$10;
myscreensay.SayValu:=dword(saystr);
addr:=@myscreensay;
addrc:=pointer($005758D0);
asm
    pushad
        mov esi,addr
        push esi
        mov ecx,dword ptr[$A3E018]
        mov ecx,dword ptr[ecx+$1C]
        mov ecx,dword ptr[ecx+$4]
        mov eax,dword ptr[ecx+$8]
        mov ecx,eax
        call addrc
    popad
end;
end;





附件列表

 

你可能感兴趣的:(地图)