本节教大家如何用基础编程语言C语言写简单的游戏修改器。

用到的工具:

1.VC++6.0(上机通常都会用的)

2.CE 5.4(任何版本都行)

3.当然要一款游戏这里我就用我临时写的C语言小游戏来作为实验对象。

教程开始:

首先我们肯定要设计一个界面:

这里我用while循环,方便后面程序执行完指令后不会退出。

在介绍重点部分时,我首先得介绍下涉及的专有名词

句柄、PID

句柄:这个嘛,是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄 。我就引用百度词条的解释。

PID:不管什么程序被运行后都会被操作系统分配一个唯一标识这个程序的ID。如果想看具体每个程序的PID(任务管理器,随便选定一个进程右击,选择转到详细信息,就可以查看了。(这里我是居于win10操作系统下))。

如果实在不理解就把他们当作现实生活中的学生证和身份证,有了这两个就能证明你的身份。程序一样。

介绍完句柄、PID的概念后我们正式开始教程:

先定义个全局变量:

HWND hwnd; //这就是句柄的变量定义

DWORD Pid; //这就是PID的定义

定义完变量后,就要获取要修改的游戏的进程句柄

这里我们用到FindWindow(NULL,“模拟的贪吃蛇游戏”)“”这里面就填写你要获取的窗口(这里我就填写我的游戏窗口名)

当然这个函数是有返回值的

hwnd = FindWindow(NULL,“模拟的贪吃蛇游戏”)  就用刚刚的句柄变量接收

获取完句柄后其次就是获取PID:

这里PID的获取就利用我们前面获取的窗口句柄获取:

GetWindowThreadProcessId(hwnd,&Pid);    //形参一:从什么地方获取(句柄),形参二:获取到的PID存放处

前期工作都做完后:

定义个新的类型变量

HANDLE hprocess =0;

这个变量的作用就是接受进程访问的许可

hprocess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);  //PROCESS_ALL_ACCESS意思是获取全部访问权限

讲完前面的现在 我们需要获取要修改的游戏分数存放的地址

地址获取方式就用ce

1.打开游戏进程 如图

2.搜索分数信息,让信息改变,再次搜索

这里我们就找到游戏分数的地址 0x00328400

后面回到我的编程界面定义新的变量

DWORD score;  //要修改的分数
DWORD ADDR =0x00328400;  //游戏分数的地址

令score = 999;

利用函数WriteProcessMemory(hprocess,(LPVOID)ADDR,&score,4,0);将修改后的地址注入到原来的地址中

到处就大功告成!!

最后附上源码:

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define Fail 0
#define Succeed 1

int GetHwnd();
void Fixprocess();
HWND hwnd;
DWORD Pid;
HANDLE hprocess = 0;
void main()
{
 int command;
 int ch;
 while(1)
 {
  system("cls");
  printf("-------------------------\n");
  printf("      1.获取窗口句柄     \n");
  printf("      2.注入指令         \n");
  printf("      3.结束程序         \n");
  printf("-------------------------\n");
  scanf("%d",&command);
  getchar();
  if(command == 3)
  {
   break;
   exit(0);
  }
  else
  {
   switch(command)
   {
     case  1:
    //获取程序的窗口句柄  int GetHwnd()
    ch = GetHwnd();
    if(ch == Succeed)
      printf("打开进程成功,并且成功获取窗口进程!");
    Sleep(2000);
    break;
     case 2:
      //注入指令
      Fixprocess();
break;
   
}
}
 }

}
int GetHwnd()
{
 hwnd = FindWindow(NULL,"模仿的贪吃蛇游戏");
 if(hwnd!=0)
 {
     GetWindowThreadProcessId(hwnd,&Pid);
  hprocess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
  if(hprocess == 0)
  {
   return Fail;
  }
  else
  {
   return Succeed;
}
}
 else
 {
      return Fail;
 }
}
void Fixprocess()
{
 //char Add[20];
 DWORD score;
 DWORD ADDR =0x00898730;
 //printf("输入游戏分数的地址:");
 //gets(Add);
 //getchar();
 //ADDR = *Add;
 printf("输入你想要的分数:");
 scanf("%ld",&score);
 DWORD res = WriteProcessMemory(hprocess,(LPVOID)ADDR,&score,4,0);
 if(res == 0)
 {
  printf("指令注入失败!");
 }
 else
 {
  printf("指令注入成功!");
 }

}

【新手教程】如何用C语言写游戏修改器!相关推荐

  1. 手把手教你写游戏修改器(终极版)

    关于怎样写植物大战僵尸游戏修改器的详细过程,在手把手教你写游戏修改器里面已经详细介绍了,这里就不再说了.前面那个修改器是基于控制台程序下面的,紧紧对于植物大战僵尸有用,采用上面那个教程已经将游戏修改器 ...

  2. 手把手教你写游戏修改器

    转载请注明出处!!!谢谢!!! 在玩游戏的时候,很多人还是喜欢用修改器的(本人一样哈)但是很多网上下的修改器,要么不能用,要么有毒,很不爽,因此还是自己动手丰衣足食吧.下面就以植物大战僵尸为例,一 ...

  3. 打造自己的游戏修改器和内存补丁

    相信很多人打游戏的时候都用修改器,这里我介绍怎样用VB编写修改器. 1.其实修改器原理很简单,一般来说,在游戏运行的时候我们对游戏内存空间中必要的数据进行修改就可以了.举个例子来说,一款拳皇模拟器里游 ...

  4. 如何让c语言编的游戏运行,如何用C语言编写游戏一.doc

    如何用C语言编写游戏 网络游戏是常谈的话题,是交互式娱乐的主力军,是一种 高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的 ...

  5. 如何下载c语言游戏,如何用C语言编写游戏.doc

    <如何用C语言编写游戏.doc>由会员分享,可在线阅读,更多相关<如何用C语言编写游戏.doc(71页珍藏版)>请在皮匠网上搜索. 1.如何用C语言编写游戏网络游戏是常谈的话题 ...

  6. 如何用C语言写一个web服务器的基础功能

    我们都知道,学一门语言,只是单独看了就不写的话是很容易出现眼高手低的,所以,今天摩杜云要给大家分享的内容,就是如何用C语言写一个web服务器的基础功能,希望大家看完有所收获. 服务器架构 目标架构 以 ...

  7. Go语言写的解析器(支持json,linq,sql,net,http等)

    Monkey程序语言 Monkey v2.0版本已发布. monkey v2.0 增加了如下内容: 新增 short arrow(->)支持(类似C#的lambda表达式) 增加 列表推导和哈希 ...

  8. 为英雄无敌3写个游戏修改器

    我是比较铁杆的英雄无敌3的fans,在网上看到这样的文章:http://game.china.com/zh_cn/play/10002765/20021113/11362720.html 就是让我方英 ...

  9. 曾经写的传奇游戏修改器!C++源码打包好了

    VC++曾经写的传奇游戏修改器源码,传奇游戏现在已经不流行了,这个程序是在传奇风靡一时的时候写的,曾经在游戏上测试过,很好用,源代码可以在VC6或者VS2003以上的版本中编译.通过本程序可以让编程开 ...

最新文章

  1. 在linux中输入locate出现locate: can not stat ()的错误
  2. COCO数据集数据转换为XML格式
  3. 假如有人在今天炸了支付宝的存储服务器...
  4. 639. 解码方法 II
  5. C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
  6. 捕获Wscript.Quit的退出码
  7. Reloading Java Classes 101: Objects, Classes and ClassLoaders Translation
  8. yum安装报错Error:Nothing to do
  9. Windows To Go,让Windows 8移动起来!
  10. OS开发 touch事件的优先级和事件传递
  11. linux aix 环境,Aix5.3安装Bash环境
  12. uboot中往s5p6818的emmc刷写内容
  13. Java 压缩文件夹
  14. 类对象实现红蓝方互殴
  15. 《董明珠的真面目,她到底有多狠》调查问卷
  16. 导入FontForge生成字体
  17. 使用 Trapezoidal Rule(梯形法则)求积分
  18. 中兴阅读在期刊杂志数字化、移动化上的探索
  19. 计算机网络网关设置路由器,天翼网关(宽带)怎么连接路由器?
  20. iphone4s 关于大于400M的视频无法拷贝的问题

热门文章

  1. 跟着老宇哥一起,咱们手把手一起DIY一个宠物喂食器,免费领开发套件!
  2. 2000年 数模国赛 b题 钢管订购与运输
  3. 使用SSM框架开发企业级应用
  4. x3D 下载以及如何使用原版NetBeans IDE 来搭建x3d编辑环境
  5. 优化APP性能的三大方法
  6. linux下I2C驱动体系结构及在FL2440开发板上的具体实现
  7. 红尘有爱,盈花香满怀
  8. linux 日志文件被占用下不来怎么办,linux 磁盘空间被占满但找不到目标文件的问题处理 lsof命令...
  9. webgl中加载模型要求以及优化方案
  10. Android平台特性