• 地图名称偏移


    找到个地图的边缘 ,2个地名相互切换的地方比如这个地方可以 422,851,22  
     
     
    使用工具把地图名称转换成UNICODE
    鹏程客栈
    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
    能搜索20多个 判断方法:
    通过修改 数值 看游戏里的地图名称是否改变了 改变了正确
     
    通过右键查找 能找到地图名称的基址
     //=
    地图名称=[[[[[b3f6cc]+1c]+1c]+60]+4]+0
     
     
     
    改变名称 就对
    地图名称=[[[[[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;





    附件列表

  • 相关阅读:
    基于深度学习的单目图像深度估计
    OpenCV探索之路(二十三):特征检测和特征匹配方法汇总
    TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)
    深度估计&平面检测小结
    论文翻译——Rapid 2D-to-3D conversion——快速2D到3D转换
    Opencv改变图像亮度和对比度以及优化
    如何将OpenCV中的Mat类绑定为OpenGL中的纹理
    Eclipse控制台中文乱码
    给java中的System.getProperty添加新的key value对
    中文简体windows CMD显示中文乱码解决方案
  • 原文地址:https://www.cnblogs.com/xe2011/p/2545620.html
Copyright © 2020-2023  润新知