这个问题来自伴水的《划拳机器人》
,对本文用途感兴趣的朋友请大致阅读伴水的帖子,在帖子中我用这个方法写了剪刀五号
,战绩不错,当然属于的方法了。
剪刀五号的思路就是每次出拳,尽量让对方能赢,然后根据一个地址段来扫描内存中对方所赢的局数的保存地址,找到后在得到比赛结果时把内存数据改掉。这个类似以前打单机游戏时用的fpe之类的修改工具。当然,如果对方故意犯规,一局也不赢,你是找不到他的地址的,这样可以通过正常途径来获取胜利。
把剪刀五号核心代码简化后,主要为三个api函数
OpenProcess,ReadProcessMemory,WriteProcessMemory
代码大致如下:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Runtime.InteropServices;
namespace
ConsoleApplication4
...
{
//
打开不安全代码开关:项目-右键-属性-生成-允许不安全代码
class
Program
...
{
[DllImport(
"
kernel32.dll
"
)]
public
static
extern
IntPtrOpenProcess(UInt32dwDesiredAccess,Int32bInheritHandle,UInt32dwProcessId);
[DllImport(
"
kernel32.dll
"
)]
public
static
extern
Int32WriteProcessMemory(IntPtrhProcess,IntPtrlpBaseAddress,
uint
[]lpBuffer,UInt32nSize,IntPtrlpNumberOfBytesWritten);
[DllImport(
"
kernel32.dll
"
)]
public
static
extern
Int32ReadProcessMemory(IntPtrhProcess,IntPtrlpBaseAddress,
uint
[]lpBuffer,UInt32nSize,IntPtrlpNumberOfBytesRead);
static
IntPtrpAddress
=
(IntPtr)
0x12bdad8
;
static
uint
[]Read
=
new
uint
[
1
];
static
uint
[]Write
=
new
uint
[]
...
{
0x64
}
;
static
private
int
mm
=
999
;
static
void
Main(
string
[]args)
...
{
unsafe
...
{
fixed
(
int
*
i
=
&
mm)
...
{pAddress
=
(IntPtr)i;}
}
IntPtrh
=
OpenProcess(
0x1F0FFF
,
0
,(UInt32)System.Diagnostics.Process.GetCurrentProcess().Id);
ReadProcessMemory(h,pAddress,Read,
4
,(IntPtr)
0
);
//
获取内存数据
Console.WriteLine(Read[
0
]);
//
输出999
WriteProcessMemory(h,pAddress,Write,
4
,(IntPtr)
0
);
//
修改内存数据
Console.WriteLine(mm);
//
输出100
Console.Read();
}
}
}
分享到:
相关推荐
首先,我们来看"C#中用API实现MP3等音频文件的播放类"。在C#中,可以使用Windows Media Player控件来播放音频文件,但这限制了功能的定制性。为了更灵活地控制音频播放,开发者可以借助Windows API中的waveOutWrite...
这通常可以通过调用Windows API函数来实现。本文将详细介绍如何在C#中通过API来控制鼠标。 #### 二、API介绍及使用方法 在提供的代码片段中,主要涉及到了以下几个关键部分: 1. **命名空间与导入:** - `using ...
`MarshalAs`是C#中用来控制如何进行跨语言互操作(interop)的数据转换的属性。它指定如何将托管数据类型映射到非托管数据类型,这对于处理像`PRINTER_INFO_2`这样的结构体时是必要的。 5. **DllImportAttribute**...
在C#中,这通常是通过调用Windows API函数来实现的。例如,可能使用`ChangeDisplaySettingsEx`或`SendInput`函数模拟键盘操作,以达到唤醒或关闭显示器的效果。 6. **Form1.Designer.cs和Form1.cs**:这两个文件是...
4. **DEVMODE结构**:这是Windows API中用于存储打印机和绘图设备的配置信息的数据结构。在添加自定义纸张时,我们需要修改DEVMODE结构来指定新的纸张尺寸。 5. **AddForm函数**:另一个重要的Windows API函数,...
标题中的“一个REST获取天气预报的客户端小例子”是指通过RESTful API来获取天气预报数据的应用实例,分别使用了C#和jQuery两种不同的技术实现。REST(Representational State Transfer)是一种网络应用程序的设计...
1. 引入`System.Runtime.InteropServices`命名空间,以便使用P/Invoke(平台调用)技术调用Win32 API函数。 ```csharp using System.Runtime.InteropServices; ``` 2. 定义Win32 API的相关方法和结构体。例如,`...
在IT行业中,C#语言广泛应用于开发Web应用程序,其中ASHX(Generic Handler)是一种轻量级的HTTP处理程序,常用于实现简单的Web服务接口。本文将深入探讨如何使用...这对于构建分布式系统和API接口具有重要的实践意义。
- 当系统图标大小变化时,可能需要使用到Windows API函数,如`LoadIcon`、`CreateIconIndirect`等来获取或创建不同大小的图标。 - P/Invoke技术允许C#代码调用非托管的WinAPI函数,需要在程序中定义对应的委托类型...
在C#中,可以通过P/Invoke机制调用Windows API函数。Windows API提供了丰富的功能,包括窗口管理、输入输出、图形绘制等,其中用于截图的功能主要涉及设备上下文的创建、位图的使用和图像的复制。 #### 关键API函数...
P/Invoke允许.NET应用程序直接调用Windows API和其他原生DLL中的函数。在C#代码中,我们需要定义一个对应的托管方法,并用`DllImport`特性进行标记,指定DLL的路径和要调用的函数名。 2. **结构和数据类型匹配** ...
**TUIO CPP:C# 实现与OSC通信详解** TUIO(Transmission of UI Events Over OSC)是一种基于OSC(Open Sound Control)的协议,专为多触点用户界面(如触摸屏、交互式白板等)设计,用于传输用户交互事件。TUIO将...
HttpClient是.NET Framework和.NET Core中用于发送HTTP请求的标准库,它提供了异步和同步的API,适用于各种网络操作,如GET、POST、PUT等。 描述中的链接指向了一个具体的博客文章,该文章详细解释了如何在C#项目中...
6. **LINQ**:语言集成查询(Language Integrated Query)是C#中用于数据库查询的强大工具,学习如何使用LINQ简化数据操作。 7. **异步编程**:理解async/await关键字,学习如何编写异步代码,提高程序的响应性。 ...
2. 加载.x文件:使用Direct3D提供的函数或SharpDX的API读取.x文件,将模型数据加载到内存中。 3. 设置场景:定义光照、材质、相机位置等,为动画创建合适的环境。 4. 创建动画控制器:处理关键帧,计算中间帧,实现...
6. **集成其他系统**:现代酒店管理系统可能需要与PMS(Property Management System)、CRS(Central Reservation System)或其他第三方服务对接,C#.NET的Web Service或API接口技术可以帮助实现这种集成。...
书中用大量的实例详细地描述了Microsoft网络API函数的应用,配套光盘也包含了所有的示例代码。对于在网络技术方面需要明确实用的Microsoft网络API信息的开发者,或是寻求Microsoft网络操作内部信息的管理员而言,...
LINQ是C#中用于数据查询的强大特性,它允许开发者以一致的方式访问各种数据源,如数据库、XML文档或集合。理解LINQ的查询表达式和方法语法对于提高数据操作效率至关重要。 5. **泛型** 泛型是C#中的一项高级特性...
6. **LINQ(Language Integrated Query)**:LINQ是C#中用于数据查询的统一、强大的API,它可以方便地处理各种数据源,如集合、数据库、XML等。 7. **异步编程**:C#引入了async/await关键字,使得异步编程更加简洁...