精华内容
参与话题
问答
  • 使用最新下载方法 (不会用这个方法,看下这个视频) 具体看视频... 缺少DLL文件,源文件损坏 (看此视频) ...游戏安装必备必装软件 http://pan.baidu.com/s/1c25PmTE 尼尔机械纪元 链接:http://
     使用最新下载方法 (不会用这个方法,看下这个视频)
    具体看视频http://pan.baidu.com/s/1c14nfMg


    缺少DLL文件,源文件损坏  (看此视频)
    请看看此视频http://pan.baidu.com/s/1boZYxIZ

    游戏安装必备必装软件
    http://pan.baidu.com/s/1c25PmTE

    尼尔机械纪元
    链接:http://pan.baidu.com/s/1bpiYyCn 密码:7w24

    逃生2
    链接:http://pan.baidu.com/s/1slRQPvn 密码:ebld

    质量效应4
    链接:http://pan.baidu.com/s/1gfzKnYz 密码:u2iw

    正当防卫3
    链接:http://pan.baidu.com/s/1slfLlKh 密码:qht8

    GTA5(1.36)
    链接:http://pan.baidu.com/s/1pLRUokV 密码:qnwn

    GTA5(1.33)
    链接:http://pan.baidu.com/s/1eS8897G 密码:9hyl

    使命召唤13
    链接:http://pan.baidu.com/s/1eSccZHC 密码:65n0

    三国志13
    链接:http://pan.baidu.com/s/1i5eEMI5 密码:gbst

    三国志13威力加强版
    链接:http://pan.baidu.com/s/1sllSeIx 密码:lw6s

    杀手6
    链接:http://pan.baidu.com/s/1mhQxoxi 密码:v4a0

    无双大蛇Z
    链接:http://pan.baidu.com/s/1eRJMatG 密码:3xfo

    奇异人生
    链接:http://pan.baidu.com/s/1i4NdIp3 密码:nwqq

    狂战传说
    链接:http://pan.baidu.com/s/1nvG0n25 密码:s17r

    孤岛惊魂5:原始杀戮
    链接:http://pan.baidu.com/s/1i5HUohZ 密码:fmfi

    生化危机7
    链接:http://pan.baidu.com/s/1kUOv827 密码:cnov

    看门狗2
    链接:http://pan.baidu.com/s/1gfKGeKN 密码:ris2

    刺客信条系列
    1-3
    链接:http://pan.baidu.com/s/1qYnXJAG 密码:jc15
    4-6
    链接:http://pan.baidu.com/s/1bpnItGz 密码:xhj8
    启示录 叛变  兄弟会 印度 中国 解放
    链接:http://pan.baidu.com/s/1qY58Fc4 密码:ua28

    近期更新系列
    http://pan.baidu.com/share/link? ... 8&uk=2561028873 
    链接:http://pan.baidu.com/s/1c29Wp1Y 密码:ekty
    链接:http://pan.baidu.com/s/1miLlptI 密码:dad3



    使命召唤4重置版
    链接:http://pan.baidu.com/s/1nvQ7urB 密码:cfdw

    文明6
    链接:http://pan.baidu.com/s/1hs7eBgK 密码:qt14

    文明5
    链接:http://pan.baidu.com/s/1c2tFCHE 密码:j4an

    质量效应系列
    http://pan.baidu.com/s/1mi0jpMg


    NBA系列
    http://pan.baidu.com/s/1hr72JLM

    孤岛惊魂系列
    http://pan.baidu.com/share/link? ... 28873#list/path=%2F

    孤岛危机系列
    http://pan.baidu.com/s/1pKUVdUV

    鬼泣系列
    链接:http://pan.baidu.com/s/1nu8bNDn 密码:iq16

    火影龙珠海贼系列
    http://pan.baidu.com/s/1nvc0BWH

    使命召唤系列
    链接:http://pan.baidu.com/s/1pLg47GZ 密码:6m8j

    比较冷门游戏
    http://pan.baidu.com/s/1mi0jpMw

    波斯王子系列
    http://pan.baidu.com/s/1eSyt8uY

    极品飞车系列
    http://pan.baidu.com/s/1jI0ToPK

    街头霸王系列
    http://pan.baidu.com/s/1o8NLKHO

    模拟经营系列
    http://pan.baidu.com/s/1c1Q7JWk

    其他必玩大作1
    http://pan.baidu.com/share/link? ... 7&uk=2561028873 

    链接:http://pan.baidu.com/s/1o7N7s2Q 密码:p76l
    链接:http://pan.baidu.com/s/1pLyJbB1 密码:2kzp
    链接:http://pan.baidu.com/s/1skOhjAl 密码:wsbx
    链接:http://pan.baidu.com/s/1qYxvb3I 密码:viqe

    其他热门游戏
    链接:http://pan.baidu.com/s/1i5kezzR 密码:xwz0

    全面战争系列
    http://pan.baidu.com/s/1eSuVJ2M

    实况足球系列
    http://pan.baidu.com/s/1o7Qnxpg

    巫师系列
    http://pan.baidu.com/s/1pLtX6Lt

    仙剑系列
    http://pan.baidu.com/s/1gf9gQ5P

    轩辕剑系列
    http://pan.baidu.com/s/1jIhq0Yi

    真三国系列
    http://pan.baidu.com/s/1mhQXzvE

    蜘蛛侠系列
    http://pan.baidu.com/s/1ge74IaB

    GTA4  (含安装视频)
    http://pan.baidu.com/s/1nvnpXSP


    战地系列
    http://pan.baidu.com/s/1b9GMWu

    生化危机系列
    http://pan.baidu.com/s/1qYLFJSo
    展开全文
  • 游戏修改

    2003-05-29 18:17:00
    开高级游戏黑客的面纱,教你打造游戏修改器 工具:SoftICE、金山游侠2002、VC++7.0、PE查看器、SPY++ 测试平台:Window2000 Professional SP2 大家好!我先给大家拜个晚年,时间过真快工,一年又过去了,我也和大家...

    开高级游戏黑客的面纱,教你打造游戏修改器
    工具:SoftICE、金山游侠2002、VC++7.0、PE查看器、SPY++
    测试平台:Window2000 Professional SP2

    大家好!我先给大家拜个晚年,时间过真快工,一年又过去了,我也和大家分开一年了,真是感慨万分呀,不知道大还记得不记得YY了,不过我是不会忘记大家的.
    这一年真是太忙了,根本就没有时间再像从前那样在深夜里一边听着音乐一边写文章了,今天就着假期,再给大家充充电:D
      今天YY给大家带来些什么呢?呵呵,看题目就知道了,看起来很酷吧,“高级游戏黑客”,什么?你说你就游戏黑客?看好了,是“高级”的!什么是高级的?等你看完这篇文章就知道了:D
    首先我介绍一下将会用到的工具:
    1、    SoftICE(不用多说了吧,我想你应该会用)
    2、    金山游侠2002(这个你也应该会用)
    3、    VC++7.0(不要求你一定会用,但至少应该会一种编程工具)
    4、    PE查看器(你可以随意找一个,没有也没关系,我会教你用SoftICE查看)
    5、    SPY++(VC里的一个查看程序信息的工具,你可以和别的,比如Delphi和C++Builder的WinSight32)

    然后就是你应该会的知识:
    1、    汇编基础
    2、    一些编程基础,至少应该看懂我介绍的几个API函数
    3、    PE文件结构的基础,不会也没关系,我会解释给你

    以上几点你都具备了的话我们就可以开始了。

    我来介绍一下我要教给你的东西。想必大家都玩过PC游吧,那么也一定用过一些专用的游戏修改器吧,比如暗黑,红警,大富翁这些经典的游戏都有它们专用的修改器,注意,我说的不是FPE之类的通用修改工具。
    你试没试过用金山游侠修改红警二的金钱?如果有的话你应该知道每玩一次就要改一次,因为这个游戏是动态分配内存的,每次重新开始都会改变。所以你会选择到网上去下载一个专用的修改器,那么你有没有想过自己做一上呢?想过?那你为什么不做?什么不会?那就好办了,看了这篇教程你就会了:D费话少说,我来讲一下原理。
    有一些经常修改游的朋友一定会知道,不论游戏中“物品”的内存地址是否是动态的,物品与物品之间相隔的距离都是不变的,我拿“楚留香新传”为例,我先用金山游侠查找内力值的内存地址,找到的结果是:79F695C,再查找物品“金创药”的地址是:328D1DC,现在我用79F695C减去328D1DC,得到:4769780,这个数就是内力值与金创药的偏移值,没看懂?接着看呀,我还没说完呢,现在重新再运行游戏,查找内力值的地址,得到:798695C再查找金创药得到的地址是:321D1DC,两个值的内存地址都改变了,但是用你内力值的地址减去金创药的地址得到的结果是什么?没错,还是4769780,也就是说,无论这两个值的内存地址变成多少,它们之间的距离是永远不变的,不光是这个游戏,一般的游戏都是,至少我没见过不是的:D
    上面讲的东西总结出一个结论,那就是我们只要得到这两个地址中的任何一个,就可以得到另外一个,只要你知道它们之间的偏移量是多少。
    我们第一步要做的就是得到这个地址,但是内存中的地址是动态改变的,得到也没有用,这里我就教你把它变成静态的,叫它永远都不变!我继续拿“楚留香新传”为例,如果你有这个游的话就跟我一起做,没有的也没关系,只要看懂这几个步骤就行了。开工!
    首先进入游戏,查找内值的地址,得到的是:798695C(不知道为什么这上游并不是每次重起都改变内存地址),按Ctrl+D打开SoftICE,下命令:BPM 798695C W(写这个地址时则中断),回到游戏中,打开人物属性面板,游戏中断了,在SofitICE中你会看到这条指令:

    0047EB17  MOV  EAX [EDX+000003F4] 下命令:D EDX+3F4将看到内力值
    0047EB1D  PUSH  EAX
    ………………………………
    ………………………………
    从上面可看出0047EB17处的指令是将内力值的指针送到EAX寄存器中,这是一个典型的寻址方式,设想一下,我们是到了EDX中的基址,那么无论什么时候只要用EDX+3F4就可以轻松的得到内力值的地址,因为000003F4是一个常量,它是不会改变的,改变的只是EDX中的地址,所以只要有办法得到EDX中的值就什么都好办了,你明白了没有?如果还是不懂,那么请再看一遍。现在要做的就是如何得到这个值,下面我教给你如何做:
      我的办法就是设计一段代码,把EDX中的值存放到一个地址中,然后运行这段代码,再返回游戏的原有指令继续执行,什么?补丁技术?SMC?随你怎么说啦,只要运行正常就一切OK啦:D
      实际操作:
    首先在程序中找一段空白处来存放我们设计的代码,很简单,只要懂得一些PE文件结构的朋友都会知道,一般在EXE文件的数据段(.data段)的结尾都会有一段缓冲区,我们可以在这段区域中写任何东西,当然你也可以用“90大法”找一段空白区,但我还是推荐你用我教给你的方法。上同我提到,如果你没有PE文件查看工具我可以教你用SoftICE查看,而且很简单,只要一个命令:MAP32 “模块名”,看一下我是怎么做的你就知道了。
    Ctrl+D呼收出SoftICE,然后下命令:MAP32 CrhChs,这时你应该看到EXE各个段的信息,我们要注意的只是.data段,既然要找的是数据段的结尾,那么我们就从下一个段开始向上找,如下:
      .data  004FB000
      .rsrc  00507000
    .data的下一个段是.rsrc段,它是从00507000开始的,也就是说以00507000为基础向上一个字节就是数据段的结尾,我所择从00506950处开始写代码,说了这么半天那么我们的代码到底是什么样子呢?修改后的指令又是什么样的呢?别急,请看下面:
      修改0047EB17后代码:
    0047EB17  JMP    00506950 //跳到我们的代码中去执行 
    0047EB1C  NOP  //由于这条指令原来的长度是6字节,而修改后的长度是5个字节,所以用一个空指令补上
    0047EB1D  PUSH  EAX

      //我们的代码:
    00506950  MOV  DWORD PTR  EAX,[EDX+00003F4] //恢复我们破坏的指令
    00506956  MOV  DWORD PTR  [00506961],EDX //把EDX保存以00506961中去
    0050695C  JMP  0047EB1D //返回原来的指令去执行

    把上面的代码用SoftICE的A命令写入,OK!
      现在我们试一下运行的效果,你现在用金山游侠搜索一下内力址的地址,什么又变了?那就地啦,它要是不变我们还用费这么大劲儿吗?记下这个地址返回到游戏中去,Ctrl+D呼出SoftICE,下命令 D *[00506961]+000003F4,在数据窗口看到什么了?呵呵,没错,看到了你刚才记住的那个地址,里面的数值正是内力的值,试着改一下,回到游戏中,呵呵,内力值变了吧:D
      讲到这里,我们的工作已经完成了%90,但别高兴的太早,后面的%10要远比前的%90花的时间长,因为我们要用编程实现这一切,因为你不能每次都像刚才那样做一次吧!
      现在我来说一下编程的步骤:
    首先用FindWindow函数得到窗口句柄,然后用GetWindowThreadID函数从窗口句柄得到这个进程的ID,接着用OpenProcess得到进程的读写权限,最后用WriteProcessMemory和ReadProcessMemory读写内存,然后。。。。呵呵,你的修改器就做成啦:D
      下面是我抄写以前写的修改器源程序片断,第一部分是动态写入刚才的代码,第二部分是读取并修改内力值,由于我没有时间整理和测试,所以不能保证没有错误,如果大家发现有遗漏的话,可以在QQ上给我留言或写信给我,代码如下:
    有几点请大家注意:
    1、    写机器码时要一个字节一个字节的写
    2、    注意要先写入自己的代码,然后再修改游中的指令(下面的代码没有这样做,因为不影响,但是你应该注意这个问题)

    //
                //动态写入代码
      //0047EB17
    #define MY_CODE1  0xE9
    #define MY_CODE2  0x34
    #define MY_CODE3  0x7E
    #define MY_CODE4  0x08
    #define MY_CODE5  0x00
    #define MY_CODE6  0x90
          //00506950
    #define MY2_CODE1  0x8B
    #define MY2_CODE2  0x82        //这部分是要写入的机器码的常量定义
    #define MY2_CODE3  0xF4
    #define MY2_CODE4  0x03
    #define MY2_CODE5  0x00
    #define MY2_CODE6  0x00

    #define MY3_CODE1  0x89
    #define MY3_CODE2  0x15
    #define MY3_CODE3  0x61
    #define MY3_CODE4  0x69
    #define MY3_CODE5  0x50
    #define MY3_CODE6  0x00

    #define MY4_CODE1  0xE9 
    #define MY4_CODE2  0xBC
    #define MY4_CODE3  0x81
    #define MY4_CODE4  0xF7
    #define MY4_CODE5  0xFF
    //-----------------------------------------------------------------------------//
    DWORD A1 =MY_CODE1;
        DWORD A2 =MY_CODE2;
        DWORD A3 =MY_CODE3;
        DWORD A4 =MY_CODE4;
        DWORD A5 =MY_CODE5;
        DWORD A6 =MY_CODE6;

        DWORD B1 =MY2_CODE1;
        DWORD B2 =MY2_CODE2;
        DWORD B3 =MY2_CODE3;  //这部分是变量的定义
        DWORD B4 =MY2_CODE4;
        DWORD B5 =MY2_CODE5;
        DWORD B6 =MY2_CODE6;

        DWORD C1 =MY3_CODE1;
        DWORD C2 =MY3_CODE2;
        DWORD C3 =MY3_CODE3;
        DWORD C4 =MY3_CODE4;
        DWORD C5 =MY3_CODE5;
        DWORD C6 =MY3_CODE6;

        DWORD D1 =MY4_CODE1;
        DWORD D2 =MY4_CODE2;
        DWORD D3 =MY4_CODE3;
        DWORD D4 =MY4_CODE4;
        DWORD D5 =MY4_CODE5;
    //--------------------------------------------------------------------------//
        HWND hWnd =::FindWindow("CRHClass",NULL); //得到窗口句柄
        if(hWnd ==FALSE)
            MessageBox("游戏没有运行!");
        else
        {
          GetWindowThreadProcessId(hWnd,&hProcId); // 从窗口句柄得到进程ID
          HANDLE nOK =OpenProcess(PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|
                                PROCESS_VM_WRITE,FALSE,hProcId);  //打开进程并得到读与权限
          if(nOK ==NULL)
              MessageBox("打开进程时出错");
          else
          {
                              //0047EB17
              WriteProcessMemory(nOK,(LPVOID)0x0047EB17,&A1,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0047EB18,&A2,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0047EB19,&A3,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0047EB1A,&A4,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0047EB1B,&A5,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0047EB1C,&A6,1,NULL);
                              //00506950
              WriteProcessMemory(nOK,(LPVOID)0x00506950,&B1,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506951,&B2,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506952,&B3,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506953,&B4,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506954,&B5,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506955,&B6,1,NULL);
                              //第二句
              WriteProcessMemory(nOK,(LPVOID)0x00506956,&C1,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506957,&C2,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506958,&C3,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506959,&C4,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0050695A,&C5,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0050695B,&C6,1,NULL);
                              //最后一句
              WriteProcessMemory(nOK,(LPVOID)0x0050695C,&D1,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0050695D,&D2,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0050695E,&D3,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x0050695F,&D4,1,NULL);
              WriteProcessMemory(nOK,(LPVOID)0x00506960,&D5,1,NULL);

              CloseHandle(nOK); //关闭进程句柄
          }
        }
    }
    /
                        //读取并修改内力值
    DWORD  hProcId;
        HWND hWnd =::FindWindow("CRHClass",NULL);
        if(hWnd ==FALSE)
            MessageBox("No");
        else
        {
          GetWindowThreadProcessId(hWnd,&hProcId);
          HANDLE nOK =OpenProcess(PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|
                                PROCESS_VM_WRITE,FALSE,hProcId);
          if(nOK ==NULL)
              MessageBox("ProcNo!");
          else
          {
              DWORD buf1;
              DWORD write;
              BOOL OK=ReadProcessMemory(nOK,(LPCVOID)0x00506961,(LPVOID)&buf1,4,NULL); //读取我们保存EDX中的基础
              if(OK ==TRUE)
              {
                write =buf1+0x000003F4;  //得到内力值的地址
                DWORD Writeed =0x00; //要修改的数值
                BOOL B =WriteProcessMemory(nOK,(LPVOID)write,&Writeed,1,NULL);
                if(B==FALSE)
                    MessageBox("WriteNo");
              }
          }
              CloseHandle(nOK);
        }

    啊,写的我手都麻啦,今天就到这里了,才疏学浅难免会有遗漏,请大家指教,如果我不会或不喜欢用VC的话,你可以在QQ上与我交流,我可以教你如何用Delphi、C++Builder、Win32Asm或VC实同上面的功能。
                                                          (如转载本篇文章请不要改动内容及作者!)
    作者:CrackYY
    Email:CoolYY@msn.com
    OICQ:20651482

    展开全文
  • 游戏修改

    2017-11-24 10:38:12
    要改一个游戏的splash动画的缩放. 只需要找到settings.xml, 把splash_mode 改掉就好了. 亲测有效 0, 不适配屏幕, 1, 2 都是适配的. 一般选2把

    要改一个游戏的splash动画的缩放. 只需要找到settings.xml, 把splash_mode 改掉就好了. 亲测有效

    0, 不适配屏幕, 1, 2 都是适配的. 一般选2把

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

    关于怎样写植物大战僵尸游戏修改器的详细过程,在手把手教你写游戏修改器里面已经详细介绍了,这里就不再说了。前面那个修改器是基于控制台程序下面的,紧紧对于植物大战僵尸有用,采用上面那个教程已经将游戏修改器的制作流程和原理讲清楚了,现在我们开始做一个完整的游戏修改器。

    1、建立一个对话框工程,建立过程VC怎样建立对话框工程中已经介绍了。这里不再介绍

    2、绘制如下界面

    其中个控件ID如下:

    列表控件:IDC_PROCESSINFO

    编辑框  :IDC_INPUT

    静态文本框:IDC_SHOW

    查看进程信息按钮:IDC_LOOKUPINFO

    确定按钮 :IDC_OK

    3、具体思路

    首先应该得到目前所有进程的ID,因为后面要找到进程的句柄,因此当用户点击查看所有进程信息时显示目前计算机所有进程信息,并记录每个进程的ID。如下图

    根据输入的进程编号,锁定用户想查找的进程。

    然后根据用户输入的数据根据上篇文章说的方法进行查找就行,主要问题就是Windows编程中涉及的一些知识,都是一些简单的从控制台转换到Windows界面控制,应该不难。

    下面直接给出代码:

    #include "stdafx.h"

    #include <windows.h>

    #include <windowsx.h>

    #include "resource.h"

    #include "MainDlg.h"

    #include <commctrl.h>

    #include <tlhelp32.h>

    typedef struct PROCESSINFOS {TCHAR Info[255];int no;DWORD ProcessID;} ProcessInfos;

    ProcessInfos ProcessInfoS[200];

    int MaxNum = 0;

    int x=0;

    DWORD tProcessID;

    DWORD g_arList[999999];         //地址列表

    int g_nListCnt=0;               //有效地址个数

    TCHAR Mess1[20] = "进程编号:";

    TCHAR Mess2[20] = "进程名称";

    void InitListView(HWND hwnd)

    {

    HWND hwndListView=GetDlgItem(hwnd,IDC_PROCESSINFO);

    //设置列表框控件格式

        DWORD dwExStyle =LVS_EX_GRIDLINES;

    ListView_SetExtendedListViewStyle(hwndListView,dwExStyle);

    //设置列

    LVCOLUMN   column[2]; 

    ZeroMemory(column,sizeof(column));

    column[0].mask   =   LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; 

    column[0].pszText   =   Mess1; 

    column[0].fmt   =   LVCFMT_CENTER; 

    column[0].cx   =   80; 

    column[1].mask   =   LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; 

    column[1].pszText   =   Mess2; 

    column[1].fmt   =   LVCFMT_CENTER; 

    column[1].cx   =   410; 

    SendDlgItemMessage(hwnd, IDC_PROCESSINFO, LVM_INSERTCOLUMN,0, (LPARAM)&column[0]);

    SendDlgItemMessage(hwnd, IDC_PROCESSINFO, LVM_INSERTCOLUMN,1, (LPARAM)&column[1]);

    }

    void ShowProcessInfo(HWND hwnd)

    {

    int i=0;

    char ans[100];

    LVITEM lvItem;

    lvItem.mask = LVIF_TEXT;

        PROCESSENTRY32 pe32;

        pe32.dwSize = sizeof(pe32);

    HWND hwndListView=GetDlgItem(hwnd,IDC_PROCESSINFO);

        HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

        if(hProcessSnap == INVALID_HANDLE_VALUE) return;

        BOOL bMore = ::Process32First(hProcessSnap,&pe32);

        while(bMore)

        {    

    lvItem.iItem = i;

    itoa(i,ans,10);

            lvItem.iSubItem = 0;

    lvItem.pszText = ans;

    ListView_InsertItem(hwndListView,(LPARAM)&lvItem);

    ListView_SetItemText(hwndListView, i, 1, pe32.szExeFile);

    wsprintf(ProcessInfoS[i].Info,pe32.szExeFile);

    ProcessInfoS[i].no = i;

    ProcessInfoS[i].ProcessID = pe32.th32ProcessID;

    i++;

    MaxNum++;

            bMore = ::Process32Next(hProcessSnap,&pe32);

        }

        ::CloseHandle(hProcessSnap);

    }

    int LockProcess(HWND hwnd)

    {

    int num;

    TCHAR info[255];

    ZeroMemory(info,sizeof(info));

    GetDlgItemText(hwnd,IDC_INPUT,info,sizeof(info));

    num = atoi(info);

    if(num<MaxNum)

    {

    x=1;

    tProcessID = ProcessInfoS[num].ProcessID;

    // MessageBox(hwnd,ProcessInfoS[num].Info,TEXT(""),MB_OK);

    SetDlgItemText(hwnd,IDC_SHOW,TEXT("请输入第一次查找的值:"));

    return 1;

    }

    else

    {

    MessageBox(hwnd,TEXT("不存在改编号的进程!!!"),TEXT("错误"),MB_OK|MB_ICONERROR);

    return 0;

    }

    }

    BOOL CompareAPage(HANDLE hProcess,DWORD dwBaseAddr,DWORD dwValue)

    {

    //读取第一页

    BYTE arBytes[4094];

    if(!::ReadProcessMemory(hProcess,(LPVOID)dwBaseAddr,arBytes,4096,NULL))

    {

    return FALSE;        //此页不可读

    }

    DWORD *pdw;

    for(int i=0;i<(int)4*1024-3;i++)

    {

    pdw = (DWORD *)&arBytes[i];

    if(pdw[0]==dwValue)  //等于要查找的值

    {

    g_arList[g_nListCnt++] = dwBaseAddr+i;

    }

    }

    return TRUE;

    }

    //第一次查找

    BOOL FindFirst(HANDLE hProcess,DWORD dwValue)

    {

    const DWORD dwOneGB = 1024*1024*1024;    //1GB

    const DWORD dwOnePage = 4*1024;          //4KB

    if(hProcess==FALSE)

    {

    return FALSE;

    }

    //查看操作系统类型,确定开始地址

    DWORD dwBase;

    OSVERSIONINFO vi = {sizeof(vi)};

    ::GetVersionEx(&vi);

    if(vi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)

    dwBase = 4*1024*1024;              //4MB

    else

    {

    dwBase = 640*1024;                  //64KB

    }

    //在开始地址到2GB地址空间寻找

    for(;dwBase<2*dwOneGB;dwBase +=dwOnePage)

    {

    //比较一页大小的内存

    CompareAPage(hProcess,dwBase,dwValue);

    }

    return TRUE;

    }

    void ShowList(HWND hwnd)

    {

    LVITEM lvItem;

    lvItem.mask = LVIF_TEXT;

    int i;

    TCHAR ans[20];

    TCHAR MessAdd[20];

    HWND hwndListView=GetDlgItem(hwnd,IDC_PROCESSINFO);

    for(i=0;i<g_nListCnt;i++)

    {

    ZeroMemory(ans,sizeof(ans));

    ZeroMemory(MessAdd,sizeof(MessAdd));

    lvItem.iItem = i;

    itoa(i,ans,10);

            lvItem.iSubItem = 0;

    lvItem.pszText = ans;

    ListView_InsertItem(hwndListView,(LPARAM)&lvItem);

    wsprintf(MessAdd,"%x",g_arList[i]);

    ListView_SetItemText(hwndListView, i, 1, MessAdd);

    // printf("%08X\n",g_arList[i]);

    }

    }

    BOOL FindNext(HWND hwnd,HANDLE hProcess,DWORD dwValue)

    {

    //保存g_arList数组有效地址的个数,初始化g_nLisatCnt

    int nOrgCnt = g_nListCnt;

    g_nListCnt = 0;

    //g_arList中寻找

    BOOL bRet = FALSE;

    DWORD dwReadValue;

    for(int i=0;i<nOrgCnt;i++)

    {

    if(::ReadProcessMemory(hProcess,(LPVOID)g_arList[i],&dwReadValue,sizeof(DWORD),NULL))

    {

    if(dwReadValue==dwValue)

    {

    g_arList[g_nListCnt++] = g_arList[i];

    bRet = TRUE;

    }

    }

    }

        if(g_nListCnt>1)

    {

    SetDlgItemText(hwnd,IDC_INPUT,"");

    }

    if(g_nListCnt==1)

    {

    x=3;

    SetDlgItemText(hwnd,IDC_SHOW,"请输入要修改的值:");

    SetDlgItemText(hwnd,IDC_INPUT,"");

    }

    return bRet;

    }

    BOOL WriteMemory(HANDLE hProcess,DWORD dwAddr,DWORD dwValue)

    {

    return ::WriteProcessMemory(hProcess,(LPVOID)dwAddr,&dwValue,sizeof(DWORD),NULL);

    }

    BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

    {

        switch(uMsg)

        {

            HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);

            HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);

    HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

        }

        return FALSE;

    }

    BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)

    {

    InitListView(hwnd);

    SetDlgItemText(hwnd,IDC_SHOW,"输入锁定的进程编号:");

    ZeroMemory(ProcessInfoS,sizeof(ProcessInfoS));

        return TRUE;

    }

    void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

    {

        switch(id)

        {

            case IDC_OK:

    {

    HANDLE hProcess;

    if(0==x)

    {

    SetDlgItemText(hwnd,IDC_SHOW,"输入锁定的进程编号:");

    int i = LockProcess(hwnd);

    //查找进程的句柄

    if(i==1)

    {

    hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,tProcessID);

    MessageBox(hwnd,TEXT("进程已锁定!!!"),TEXT("锁定进程成功"),MB_OK);

    }

    break;

    }

    if(1==x)

    {

    int iVal;

    TCHAR Fnum[255];

    hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,tProcessID);

    GetDlgItemText(hwnd,IDC_INPUT,Fnum,sizeof(Fnum));

    iVal = atoi(Fnum);

    FindFirst(hProcess,iVal);

    wsprintf(Mess1,"序号");

    wsprintf(Mess2,"地址");

    InitListView(hwnd);

    if(g_nListCnt>=1)

    {

    if(g_nListCnt>1)

    {

    MessageBox(hwnd,TEXT("第一次搜索完成!!!"),TEXT("成功"),MB_OK);

    ShowList(hwnd);

    SetDlgItemText(hwnd,IDC_SHOW,"请输入下一次的值:");

    SetDlgItemText(hwnd,IDC_INPUT,"");

    x=2;

    }

    if(g_nListCnt==1)

    {

                                MessageBox(hwnd,TEXT("第一次搜索完成!!!"),TEXT("成功"),MB_OK);

    ShowList(hwnd);

    SetDlgItemText(hwnd,IDC_SHOW,"请输入要修改的值:");

    SetDlgItemText(hwnd,IDC_INPUT,"");

    x=3;

    }

    }

    break;

    }

    if(2==x)

    {

     DWORD iVal;

     TCHAR Fnum[255];  

     while(g_nListCnt>1)

     {

     hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,tProcessID);

     GetDlgItemText(hwnd,IDC_INPUT,Fnum,sizeof(Fnum));

     iVal = atoi(Fnum);

     FindNext(hwnd,hProcess,iVal);

     //显示查找结果

     ShowList(hwnd);

     }

     break;

    }

    if(3==x)

    {

     int iVal;

     TCHAR Fnum[255];

     hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,tProcessID);

         GetDlgItemText(hwnd,IDC_INPUT,Fnum,sizeof(Fnum));

     iVal = atoi(Fnum);

     if(WriteMemory(hProcess,g_arList[0],iVal))

     {

     MessageBox(NULL,TEXT("修改成功"),TEXT("成功"),MB_OK);

     }

     break;

    }

    }

            break;

    case IDC_LOOKUPINFO:

    {

    ShowProcessInfo(hwnd);

    }

    break;

            default:

    break;

        }

    }

    void Main_OnClose(HWND hwnd)

    {

        EndDialog(hwnd, 0);

    }

    展开全文
  • 制作游戏修改

    千次阅读 2019-03-27 00:10:07
    本次教程从最基础的内容开始, 讲述如何去制作一个游戏修改器的全部过程, 从分析内存数据开始到破解器的开发等出发做起. 0x00: 使用工具 Cheat Engine 5.6.1 将要修改游戏 PlantsVsZombies....
  • 游戏修改器的基本工作原理

    千次阅读 2010-04-15 23:57:00
    顾名思义,前者只能修改特定的游戏,此类修改器也叫“无敌引导程序”或“游戏作弊器”;而后 者则能够以“不变应万变”,可以修改大多数的游戏。本文主要讨论后者,相比之下,前者是后者只留下修改功能的“简化版”...
  • GE游戏修改器,GE游戏修改器,GE游戏修改器,GE游戏修改器,GE游戏修改器,GE游戏修改器
  • 使用python编写游戏修改器

    千次阅读 2018-11-16 12:25:57
    由于游戏难度太高了,于是就打算自己写一个修改器。通过查阅资料,在 Windows 下的修改器主要需要用到四个函数:OpenProcess, CloseHandle, WriteProcessMemory, ReadProcessMemory。这几个都是C++的函数,在Python...
  • 本节教大家如何用基础编程语言C语言写简单的游戏修改器。用到的工具:1.VC++6.0(上机通常都会用的)2.CE 5.4(任何版本都行)3.当然要一款游戏这里我就用我临时写的C语言小游戏来作为实验对象。教程开始:首先我们...
  • 支持各种单机游戏和部分网络游戏~!!!修改各种数值 使游戏通关更加简单
  • 本资源摘自吧友分享,并非原创,无盗作之意,请见谅 亲测支持RGSSAD文件的解包以及maker rpg xp 制作的游戏存档修改
  • CE游戏修改器制作游戏修改器教程

    千次阅读 2014-12-28 23:19:08
     (就像玩游戏一样,完全是闯关试的操作,请各位按照顺序,一关一关的走)  按下一步进入教程第二关,需要扫描的精确数值是100    现在开始搜索精确数值 100 数值中输入 100 点击 首次扫描 按钮  
  • 游戏修改器制作流程

    千次阅读 2016-08-30 16:39:07
    以休闲游戏“植物大战僵尸”为例,制作无限阳光修改器。 制作游戏修改器,应该有很多人对这类内容感兴趣吧。 发现这个游戏纯属巧合,一日我在百度搜索“植物”这个词时,搜索框下方就列出一大堆“植物大战僵尸”的...
  • 游戏修改器原理

    千次阅读 2012-04-15 21:53:49
    修改内存。...便可确定生命值的地址,在制作修改器的时候只要动态的修改这个值使其一直保持全满的状态便可达到生命无限的效果,当然这只是雏形的思路,对于不同问题只要少加变形即可,有的游戏地址并
  • CE也不是专门用来调试的,本章将介绍几款调试工具,并且完善上一章的东方辉针城修改器
  • GTA4-10属性修改器(通用版)

    千次下载 热门讨论 2009-07-27 18:51:15
    GTA4-10属性修改器(通用版)非常之好用。 [Num 0] GOD MODE [Toggle]......上帝模式......无敌 [Num 1] Infinite Ammo [Toggle].............无线子弹 [Num 2] 1 Hit Kill [Toggle].....一击毙杀 [Num 3] Mever ...
  • 最初的想法是写一个狮心王的修改器,但是后来想想,已经写了很多修改器了,每次都在改那些代码,麻烦的很,于是就转写了这个框架,把要修改的游戏的信息保存在配置文件当中。当初想用INI或者其他形式文件来保存,...
  • http://download.csdn.net/source/195988专用游戏修改器制作工具完整说明文件:一、适用范围:已经用其他游戏修改器(建议使用CE或GM等带有调试功能的修改器,某些情况下金山无法确定正确地址)成功修改游戏(包括...
  • 关于烧饼游戏修改器的分析

    千次阅读 2017-01-09 16:46:34
     烧饼游戏修改器是一款元老级的游戏修改器,提供了精确搜索、模糊搜索、联合搜索、数据过滤、存储搜索与读取搜索等功能。主要实现搜索手机进程的内存数据并做相应修改。  本文中分析的版本为2.0.2(34),SDK:8,...
  • VirtualDesktop(^_^) 、vbman2003(家人) 两位朋友的支持,这个代码没有他们的帮助是不可能完成的,对于其他给于帮助的朋友也表示谢意~~~~~~然后呢说说我在写啥东东:一个游戏修改器,但是可以用做很多个游戏却不能...
  • 手把手教你写游戏修改器

    千次阅读 2012-07-28 00:25:59
    在玩游戏的时候,很多人还是喜欢用修改器的(本人一样哈)但是很多网上下的修改器,要么不能用,要么有毒,很不爽,因此还是自己动手丰衣足食吧。下面就以植物大战僵尸为例,一步一步教大家写植物大战僵尸的修改器。...
  • 游戏修改器、外挂原理

    千次阅读 2014-05-14 10:02:49
    修改内存。...便可确定生命值的地址,在制作修改器的时候只要动态的修改这个值使其一直保持全满的状态便可达到生命无限的效果,当然这只是雏形的思路,对于不同问题只要少加变形即可,有的游戏地址并
  • RM游戏通用存档修改器

    热门讨论 2011-04-11 13:46:03
    存档修改器 更符合规划符合股份过户恢复和法国恢复供货
  • 刺客信条奥德赛修改器是一款专门针对《刺客信条奥德赛》热门动作冒险游戏而设计制作的游戏辅助修改工具,可以修改游戏多项属性,功能丰富、操作简单,能够快速为你获得无限生命、无限资源、无限经验、无限经验点、...
  • 塞尔达修改器

    2018-07-29 17:29:31
    修改器支持最新游戏版本v1.5.0以及mecu1.12.2d,支持位置传送,超级跳跃,锁定空中位置,只是耐力锁定好像不支持最新版本,但生命值锁定依旧可以
  • 数据修改器

    2012-05-21 22:29:25
    数据修改器 修改数据的一款工具分的 曾经获得国际举动的一款工具是大家非常喜欢的!
  • 在第二章介绍了hook机制,本章要自己实现hook,实现调用某个函数时我们能截获、修改、取消这次调用
  • 搜索速度极快我的收藏夹 提供快速装载游戏的方式 内存修改 内存数值高阶和低阶的搜索以及编辑 存档编辑 存档文件的数值高阶和低阶的搜索以及编辑 图象捕捉 抓取游戏图象 游戏记录 编写攻略和记录流程
  • 又一篇。写写回调。研究了N小时,结果就这么几句。。怒!先帖VB6写的这个回调:模块:Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal ...
  • 包括游戏里那些HP、MP、金钱等,那么只要能修改内存就能自由改变玩家的HP、金钱了(当然对于网游是没用的,这些数据都储存在服务器,客户端里的只是一个副本),常见的满血、金钱无限等游戏修改器大部分就是这个原理

空空如也

1 2 3 4 5 ... 20
收藏数 2,361,521
精华内容 944,608
关键字:

游戏修改