首页
社区
课程
招聘
[新手]使用 Microsoft Visual Studio 2005 VC++产生的 trainer 程式简易教程
发表于: 2004-11-13 10:19 6388

[新手]使用 Microsoft Visual Studio 2005 VC++产生的 trainer 程式简易教程

2004-11-13 10:19
6388
独孤游侠附带了一个测试程序Demo.exe,DEMOS中增加功能所在地址是00451F60
原机器码为@FFh,80h,FCh,02h,00h,00h
NOP功能机器码为@90h,90h,90h,90h,90h,90h

以下是使用 Microsoft Visual Studio 2005 产生自己的 trainer 程式作弊为例
      1.在 Microsoft Visual Studio 2005 VC++ 的主选单中选择 File/New,PROJECT
      2.选择VC++的MFC的 MFC Application
      3.在 name: 栏位中输入名称 (我用1为例)
      4.接下来会问你应用程式的型态,先选左边APPLICATION,再选择 " Dialog based " ,再选USE OF MFC中的USE MFC IN A STATIC LIBRARY,使其能在其它系统运行,无须带DLL。
      5.接下来选FINISH即可
      6.最後选择完成即可产生 "1" 这个应用程式专案
      7.在resource view窗口,双击IDD_MY1_DIALOG,同TOOLBOX增加两个RADIO BUTTON,
      8.双击第一个RADIO1 BUTTON,并找到下列程式段落...
// TODO: Add your control notification handler code here
      9.将以下程式码加在 " // TODO: " 这行下面...( "//" 之後为程式注解)

HWND hWnd =::FindWindow(NULL,"Demos"); //得到窗口句柄
   
        if(hWnd ==FALSE) MessageBox("游戏没有运行!"); //如果没找到窗口句柄,显示"游戏没有运行!"

        DWORD openProcId;//定义一个双字名为openProcId
   
        GetWindowThreadProcessId(hWnd,&openProcId); // 从窗口句柄得到进程ID

    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE,FALSE,openProcId); //打开进程并得到读与权限
        
        DWORD GamedataAddress1 = 0x00451F60;//定义一个双字名为GamedataAddress1,GAME内存地址
        DWORD GameData1 = 0x90909090;//定义一个双字名为GameData1,16进制表示5F5E0FF=99999999,与下面的4联用
    WriteProcessMemory(hProcess, (void *)GamedataAddress1, (void *)&GameData1, 4, NULL); //在内存地址写入数值,4为双字

        DWORD GamedataAddress2 = 0x00451F64;//定义一个双字名为GamedataAddress2,GAME内存地址
        WORD GameData2 = 0x9090;//定义一个双字名为GameData2,16进制表示,与下面的4联用
    WriteProcessMemory(hProcess, (void *)GamedataAddress2, (void *)&GameData2, 2, NULL);
        //...........可一直加下去,LONG,SHORT,DWORD,WORD,BYTE,CHAR等和VB用法差不多
        //注意的是DWORD双字NULL前的数为4,WORD字NULL前的数为2,BYTE字节NULL前的数为1

      10.双击第2个RADIO2 BUTTON,并找到下列程式段落...
// TODO: Add your control notification handler code here
      11.将以下程式码加在 " // TODO: " 这行下面...( "//" 之後为程式注解)

HWND hWnd =::FindWindow(NULL,"Demos"); //得到窗口句柄
   
        if(hWnd ==FALSE) MessageBox("游戏没有运行!"); //如果没找到窗口句柄,显示"游戏没有运行!"

        DWORD openProcId;//定义一个双字名为openProcId
   
        GetWindowThreadProcessId(hWnd,&openProcId); // 从窗口句柄得到进程ID

    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE,FALSE,openProcId); //打开进程并得到读与权限
        
        DWORD GamedataAddress3 = 0x00451F60;//定义一个双字名为GamedataAddress3,GAME内存地址
        DWORD GameData3 = 0xFF80FC02;//定义一个双字名为GameData3,16进制表示5F5E0FF=99999999,与下面的4联用
    WriteProcessMemory(hProcess, (void *)GamedataAddress3, (void *)&GameData3, 4, NULL); //在内存地址写入数值,4为双字

        DWORD GamedataAddress4 = 0x00451F64;//定义一个双字名为GamedataAddress4,GAME内存地址
        WORD GameData4 = 0x0000;//定义一个双字名为GameData4,16进制表示,与下面的4联用
    WriteProcessMemory(hProcess, (void *)GamedataAddress4, (void *)&GameData4, 2, NULL);
        //...........可一直加下去,LONG,SHORT,DWORD,WORD,BYTE,CHAR等和VB用法差不多
        //注意的是DWORD双字NULL前的数为4,WORD字NULL前的数为2,BYTE字节NULL前的数为1
        12。最后BUILD,也可加入一些其他功能,信息。

PS:里面有VC++制作EXE教程FLASH。。。TRAINER。EXE,DEMOS。EXE,README,源代码(有简易说明),。。。。。。。。。。,上次那个VB需要装VB2005。。。。。。。。。。。。。。。还有就是前后两次由于我疏忽,把名字和地址,数值改成你样的GAME就可以了。造成不便,请见谅。

以及怎样使用GAMEMASTER8。0的机械码追综功能。使其能在TRAINER中得于运用
由于空间问题放到这里了。

                                                            复仇者
                                                         2004。11。13

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 107
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
第一
2004-11-13 10:37
0
雪    币: 237
活跃值: (175)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
Microsoft Visual Studio 2005是最新的吗?好久没关注编程工具,都不晓得有2005了。是.Net系列的吗?也需要框架之持的吧?
2004-11-13 10:41
0
游客
登录 | 注册 方可回帖
返回
//