`
csstome
  • 浏览: 1508994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

c#中用windows api函数修改内存数据

阅读更多

这个问题来自伴水的《划拳机器人》 ,对本文用途感兴趣的朋友请大致阅读伴水的帖子,在帖子中我用这个方法写了剪刀五号 ,战绩不错,当然属于的方法了。

剪刀五号的思路就是每次出拳,尽量让对方能赢,然后根据一个地址段来扫描内存中对方所赢的局数的保存地址,找到后在得到比赛结果时把内存数据改掉。这个类似以前打单机游戏时用的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一些类的实现

    首先,我们来看"C#中用API实现MP3等音频文件的播放类"。在C#中,可以使用Windows Media Player控件来播放音频文件,但这限制了功能的定制性。为了更灵活地控制音频播放,开发者可以借助Windows API中的waveOutWrite...

    c#中用api控制鼠标

    这通常可以通过调用Windows API函数来实现。本文将详细介绍如何在C#中通过API来控制鼠标。 #### 二、API介绍及使用方法 在提供的代码片段中,主要涉及到了以下几个关键部分: 1. **命名空间与导入:** - `using ...

    C#获取打印机状态+API函数详细讲解.pdf

    `MarshalAs`是C#中用来控制如何进行跨语言互操作(interop)的数据转换的属性。它指定如何将托管数据类型映射到非托管数据类型,这对于处理像`PRINTER_INFO_2`这样的结构体时是必要的。 5. **DllImportAttribute**...

    C# Winform 控制显示器开关 C/S项目 编写工具VS2008 达到节电功能

    在C#中,这通常是通过调用Windows API函数来实现的。例如,可能使用`ChangeDisplaySettingsEx`或`SendInput`函数模拟键盘操作,以达到唤醒或关闭显示器的效果。 6. **Form1.Designer.cs和Form1.cs**:这两个文件是...

    C#.net编写的向XP或NT系统当前黙认打印机添加自定义纸张DLL

    4. **DEVMODE结构**:这是Windows API中用于存储打印机和绘图设备的配置信息的数据结构。在添加自定义纸张时,我们需要修改DEVMODE结构来指定新的纸张尺寸。 5. **AddForm函数**:另一个重要的Windows API函数,...

    一个REST获取天气预报的客户端小例子(分别用C#和jQuery实现)

    标题中的“一个REST获取天气预报的客户端小例子”是指通过RESTful API来获取天气预报数据的应用实例,分别使用了C#和jQuery两种不同的技术实现。REST(Representational State Transfer)是一种网络应用程序的设计...

    C#用代码打开软键盘

    1. 引入`System.Runtime.InteropServices`命名空间,以便使用P/Invoke(平台调用)技术调用Win32 API函数。 ```csharp using System.Runtime.InteropServices; ``` 2. 定义Win32 API的相关方法和结构体。例如,`...

    C# ashx接口实现 实例

    在IT行业中,C#语言广泛应用于开发Web应用程序,其中ASHX(Generic Handler)是一种轻量级的HTTP处理程序,常用于实现简单的Web服务接口。本文将深入探讨如何使用...这对于构建分布式系统和API接口具有重要的实践意义。

    c#动态显示改变系统图标大小

    - 当系统图标大小变化时,可能需要使用到Windows API函数,如`LoadIcon`、`CreateIconIndirect`等来获取或创建不同大小的图标。 - P/Invoke技术允许C#代码调用非托管的WinAPI函数,需要在程序中定义对应的委托类型...

    c#截屏代码

    在C#中,可以通过P/Invoke机制调用Windows API函数。Windows API提供了丰富的功能,包括窗口管理、输入输出、图形绘制等,其中用于截图的功能主要涉及设备上下文的创建、位图的使用和图像的复制。 #### 关键API函数...

    C# 调用C++ 生成的dll 源代码

    P/Invoke允许.NET应用程序直接调用Windows API和其他原生DLL中的函数。在C#代码中,我们需要定义一个对应的托管方法,并用`DllImport`特性进行标记,指定DLL的路径和要调用的函数名。 2. **结构和数据类型匹配** ...

    TUIO_CPP tuio 的c#实现

    **TUIO CPP:C# 实现与OSC通信详解** TUIO(Transmission of UI Events Over OSC)是一种基于OSC(Open Sound Control)的协议,专为多触点用户界面(如触摸屏、交互式白板等)设计,用于传输用户交互事件。TUIO将...

    对于C#(HttpClient)方式网络请求的封装

    HttpClient是.NET Framework和.NET Core中用于发送HTTP请求的标准库,它提供了异步和同步的API,适用于各种网络操作,如GET、POST、PUT等。 描述中的链接指向了一个具体的博客文章,该文章详细解释了如何在C#项目中...

    C#入门经典源码C#入门经典源码C#入门经典源码

    6. **LINQ**:语言集成查询(Language Integrated Query)是C#中用于数据库查询的强大工具,学习如何使用LINQ简化数据操作。 7. **异步编程**:理解async/await关键字,学习如何编写异步代码,提高程序的响应性。 ...

    C#操作directX动画

    2. 加载.x文件:使用Direct3D提供的函数或SharpDX的API读取.x文件,将模型数据加载到内存中。 3. 设置场景:定义光照、材质、相机位置等,为动画创建合适的环境。 4. 创建动画控制器:处理关键帧,计算中间帧,实现...

    酒店管理系统 基于c#.net平台,附加数据库sql 2000

    6. **集成其他系统**:现代酒店管理系统可能需要与PMS(Property Management System)、CRS(Central Reservation System)或其他第三方服务对接,C#.NET的Web Service或API接口技术可以帮助实现这种集成。...

    Windows网络编程(第2版)

    书中用大量的实例详细地描述了Microsoft网络API函数的应用,配套光盘也包含了所有的示例代码。对于在网络技术方面需要明确实用的Microsoft网络API信息的开发者,或是寻求Microsoft网络操作内部信息的管理员而言,...

    C#完全手册中文版电子书

    LINQ是C#中用于数据查询的强大特性,它允许开发者以一致的方式访问各种数据源,如数据库、XML文档或集合。理解LINQ的查询表达式和方法语法对于提高数据操作效率至关重要。 5. **泛型** 泛型是C#中的一项高级特性...

    C#本质论(第三版_全_中文版)

    6. **LINQ(Language Integrated Query)**:LINQ是C#中用于数据查询的统一、强大的API,它可以方便地处理各种数据源,如集合、数据库、XML等。 7. **异步编程**:C#引入了async/await关键字,使得异步编程更加简洁...

Global site tag (gtag.js) - Google Analytics