一篇传奇世界写屏文章

2023-10-30 07:40

本文主要是介绍一篇传奇世界写屏文章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

出自:游戏外挂技术论坛

作者: acfg12


看过不少游戏内挂的文章,自己也来胡乱的写点,大家不要见笑.

第一步:我们要找到传奇世界的写屏函数的地址.
聪明点的人可能已经发现了,在woool/data/woool.dat实际上是一个可执行文件,不知道的话就用OllyDbg调入woool/woool.exe分析也可以得到。
好了,把woool/data/woool.dat改名woool.exe,可直接正常进入游戏。
用PEID看看woool.exe是否有壳

没有壳,正好省去一大步,HOHO.
直接OD加载,点右键,选择查找UNICODE

然后按CTRL+F查找 攻城区

双击来到这里

初步判断这个CALL应该是游戏的显示函数;
依葫芦画瓢,我们写一个函数
void DispText(CString string)
{
  char dstring[255];
  sprintf(dstring,"%s",string);
  DWORD _address=(DWORD)&dstring[0];
  _asm
  {
    push ds
    mov ecx,dword ptr ds:[0xD76840]
    mov eax,dword ptr ds:[ecx]
    push 0
    push 0
    push 0
    push 1
    push 0xFF00FF00    //颜色
    push _address      //字符串的地址
    push 0xC0          //Y坐标
    push 0x160         //X坐标
    call dword ptr ds:[eax+0x18]
    pop ds
  }
}
我们再写个调用他的函数
void DispFunc()
{
  DispText("大家好,我在这里!");
}
下面要考虑怎么调用这个函数了,我们知道游戏里屏幕是不断更新的,我们要是只是写上去一次,下次更新就会把上次写的抹去了,我们必须把这个函数加到游戏的一个循环里面去,让游戏自动调用我们写的函数。
观察游戏后发现左下角的显示地图名字和坐标的文字,我们可以把函数加到显示地图名字和坐标的那个函数那里,这样,每显示一次地图名字和坐标就会自动调用我们的函数了。
用OD加载程序,我们发现显示地图坐标的格式是X:Y,打开查找UNICODE,然后在里面搜索%d:%d,找到不少,一个一个动态分析后,终于找到这个CALL:

图中黄色那条正是调用显示的那个CALL
这里不好下手,我们把目标放到下面0x522627的那个CALL
把这里改成先执行我们自己的函数,然后执行原来的CALL最后返回到下面语句继续执行
先把0x522627处的CALL修改掉,变成CALL我们自己的函数,代码如下:
  FARPROC p=(FARPROC)_DispFunc;
  DWORD dwP=(DWORD)p-0x522627-0x5;  
  DWORD dwOldFlag;
  VirtualProtect((void*)0x522628,4,PAGE_READWRITE,&dwOldFlag);
   *((DWORD*)0x522628)=(DWORD)dwP;
  VirtualProtect((void*)0x522628,4,dwOldFlag,&dwOldFlag);
这里p是我们的函数的地址,0x522627是要修改的CALL的首地址,0x5是要修改的地址的机器码长度,具体为什么要这样写,可以参考加密解密2里面关于jmp和call指令汇编的解释,好了,接下来我们要写个函数,先调用我们自己的写字函数,然后跳转到原来CALL的地址,代码如下:
const DWORD conaddress=0x479190;
__declspec(naked) _DispFunc()
{
_asm
{
  push ds
  push eax
  push edx
  push ecx
  //调用自己的函数
  call DispFunc
  //调用完毕恢复寄存器
  pop ecx
  pop edx
  pop eax
  pop ds
  jmp conaddress   //跳转到原来CALL的地址
}
}

最后退出是要把数据改回,避免程序跳转到不可用的地址,造成程序崩溃。
DWORD dwP=0x479190-0x522627-0x5;
DWORD dwOldFlag;
VirtualProtect((void*)0x522628,4,PAGE_READWRITE,&dwOldFlag);
  *((DWORD*)0x522628)=dwP;
VirtualProtect((void*)0x522628,4,dwOldFlag,&dwOldFlag);

全文完,希望能对一些未入门的朋友有所帮助.

这篇关于一篇传奇世界写屏文章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306497

相关文章

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

【Linux】萌新看过来!一篇文章带你走进Linux世界

🚀个人主页:奋斗的小羊 🚀所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、初识Linux💥1.1 什么是操作系统?💥1.2 各种操作系统对比💥1.3 现代Linux应用💥1.4 Linux常用版本 💥2、Linux 和 Windows 目录结构对比💥2.1 文件系统组织方式💥2.2

多线程的系列文章

Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1)   Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多线程学习(四)等待/通知(wait/notify)机制 Java多线程学习(五)线程间通信知识点补充 Java多线程学习(六)Lock锁的使用 Java多

缓存的常见问题 以及解决博客文章

1.jedispool 连 redis 高并发卡死  (子非鱼yy) https://blog.csdn.net/ztx114/article/details/78291734 2. Redis安装及主从配置 https://blog.csdn.net/ztx114/article/details/78320193 3.Spring中使用RedisTemplate操作Redis(sprin

java计算机毕设课设—企业员工信息管理系统(附源码、文章、相关截图、部署视频)

这是什么系统? 获取资料方式在最下方 java计算机毕设课设—企业员工信息管理系统(附源码、文章、相关截图、部署视频) 企业员工信息管理系统旨在为公司提供高效的员工信息管理解决方案。该系统的核心功能涵盖密码修改、员工管理、部门管理、出勤管理、工资管理、请假审核等方面,帮助企业优化人力资源管理流程。系统结构如下: (1)前端(员工端): 1.密码修改:员工可以修改自己的密码,提升账户的安全

AI产品经理:ai产品经理从零基础到精通,非常详细收藏我这一篇就够了

在互联网的浪潮中,AI人工智能领域无疑是最引人注目的风口。AI产品经理,作为这一领域的新兴岗位,以其高薪、低压力、无年龄限制等优势,吸引了众多互联网从业者的目光。随着GPT等AIGC工具的兴起,AI产品经理的市场需求日益增长。 AI产品经理需不需要懂算法?🤔‍‍‍ AI产品经理不必像算法工程师那样精通算法,但必须能够与算法工程师有效沟通,了解如何管理AI项目,协调项目资源。 成功转行AI产

android的工程和代码的命名规范(第一篇文章,勿喷)

1。首先我们从编译代码的工具说起吧:工程中的注释一般都是中文写的(毕竟大家都是中国人,还是习惯于中文)这样就设计到乱码的问题了;对于这类问题,我们一般最好的处理方法就是将工程设置成 UTF-8 的格式;下面就说说怎么将工作空间或者是工程设置成UTF-8 的格式吧(当然我这里面说的是eclips