`
早起的虫儿找鸟吃
  • 浏览: 1002 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

C#做挂常用API收集

 
阅读更多
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;  //这个肯定要的  

namespace WindowsApplication1
{
    class win32API
    {
        public const int OPEN_PROCESS_ALL = 2035711;
        public const int PAGE_READWRITE = 4;
        public const int PROCESS_CREATE_THREAD = 2;
        public const int PROCESS_HEAP_ENTRY_BUSY = 4;
        public const int PROCESS_VM_OPERATION = 8;
        public const int PROCESS_VM_READ = 256;
        public const int PROCESS_VM_WRITE = 32;

        private const int PAGE_EXECUTE_READWRITE = 0x4;
        private const int MEM_COMMIT = 4096;
        private const int MEM_RELEASE = 0x8000;
        private const int MEM_DECOMMIT = 0x4000;
        private const int PROCESS_ALL_ACCESS = 0x1F0FFF;

        


        //查找窗体
        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        public extern static IntPtr FindWindow(
            string lpClassName, 
            string lpWindowName
            );

        //得到目标进程句柄的函数
        [DllImport("USER32.DLL")] 
        public extern static int GetWindowThreadProcessId(
            int hwnd, 
            ref int lpdwProcessId
            );
        [DllImport("USER32.DLL")]
        public extern static int GetWindowThreadProcessId(
            IntPtr hwnd, 
            ref int lpdwProcessId
            );

        //打开进程
        [DllImport("kernel32.dll")]
        public extern static int OpenProcess(
            int dwDesiredAccess, 
            int bInheritHandle, 
            int dwProcessId
            );
        [DllImport("kernel32.dll")]
        public extern static IntPtr OpenProcess(
            uint dwDesiredAccess, 
            int bInheritHandle, 
            uint dwProcessId
            );
        
        //关闭句柄的函数
        [DllImport("kernel32.dll", EntryPoint = "CloseHandle")]
        public static extern int CloseHandle(
            int hObject
            );

        //读内存
        [DllImport("Kernel32.dll ")]
        public static extern Int32 ReadProcessMemory(
            IntPtr hProcess,
            IntPtr lpBaseAddress,
            [In, Out] byte[] buffer,
            int size,
            out IntPtr lpNumberOfBytesWritten
            );
        [DllImport("Kernel32.dll ")]
        public static extern Int32 ReadProcessMemory(
            int hProcess,
            int lpBaseAddress,
            ref int buffer,
            //byte[] buffer,
            int size,
            int lpNumberOfBytesWritten
            );
        [DllImport("Kernel32.dll ")]
        public static extern Int32 ReadProcessMemory(
            int hProcess,
            int lpBaseAddress,
            byte[] buffer,
            int size,
            int lpNumberOfBytesWritten
            );

        //写内存
        [DllImport("kernel32.dll")]
        public static extern Int32 WriteProcessMemory(
            IntPtr hProcess,
            IntPtr lpBaseAddress, 
            [In, Out] byte[] buffer, 
            int size, 
            out IntPtr lpNumberOfBytesWritten
            );

        [DllImport("kernel32.dll")]
        public static extern Int32 WriteProcessMemory(
            int hProcess, 
            int lpBaseAddress, 
            byte[] buffer, 
            int size, 
            int lpNumberOfBytesWritten
            );

        //创建线程
        [DllImport("kernel32", EntryPoint = "CreateRemoteThread")]
        public static extern int CreateRemoteThread(
            int hProcess,
            int lpThreadAttributes,
            int dwStackSize,
            int lpStartAddress,
            int lpParameter,
            int dwCreationFlags,
            ref int lpThreadId
            );

        //开辟指定进程的内存空间
        [DllImport("Kernel32.dll")]
        public static extern System.Int32 VirtualAllocEx(
         System.IntPtr hProcess,
         System.Int32 lpAddress,
         System.Int32 dwSize,
         System.Int16 flAllocationType,
         System.Int16 flProtect
         );

        [DllImport("Kernel32.dll")]
        public static extern System.Int32 VirtualAllocEx(
        int hProcess,
        int lpAddress,
        int dwSize,
        int flAllocationType,
        int flProtect
        );

        //释放内存空间
        [DllImport("Kernel32.dll")]
        public static extern System.Int32 VirtualFreeEx(
        int hProcess,
        int lpAddress,
        int dwSize,
        int flAllocationType
        );
    }
}

 

分享到:
评论

相关推荐

    C#调用C++ Api或接口转换工具

    在.NET框架中,C#是一种常用的编程语言,而C++则有着广泛的应用,尤其是在系统级编程和高性能计算领域。有时我们需要在C#项目中利用已有的C++库或API,这就涉及到了跨语言互操作性。本文将详细介绍如何在C#中调用C++...

    C# REVIT_API 2016 帮助文件

    五、常用API类和方法 1. `FamilyManager`和`FamilySymbol`:用于管理族和族符号,创建和编辑族类型。 2. `View`和`ViewType`:处理视图和视图类型,如平面视图、立面视图等。 3. `Wall`、`Door`、`Window`等:直接...

    C#常用代码(个人收集)

    这个名为"C#常用代码"的压缩包文件,很显然包含了一些C#编程中常用的代码片段或示例,可以帮助开发者快速解决日常遇到的问题,或者作为学习C#的参考资料。 在C#中,常用的知识点包括但不限于以下几个方面: 1. **...

    C# 常用类库(多年积累的精华大部分可以直接到项目开发).rar

    "C# 常用类库(多年积累的精华大部分可以直接到项目开发)"这个压缩包文件很可能是某位资深开发者多年来收集和整理的C#实用类库集合,旨在为其他开发者提供直接可用的代码资源。 C#中的常用类库主要分为几个部分: 1...

    C#常用类库最新版.zip

    "C#常用类库最新版.zip"很可能包含了一系列常用的C#类库,这些类库可以帮助开发者处理各种任务,如数据操作、网络通信、文件I/O、图形处理等。下面将对C#中的一些重要类库及其用途进行详细介绍。 1. **.NET ...

    C# 收集大全

    【C#编程基础】 C#(读作"C sharp")是一种面向对象的编程语言,由微软公司开发,主要用于构建Windows应用程序、Web应用以及游戏。它以其简洁、类型安全和性能高效而著称,是.NET框架的核心语言。在C#中,类是基本...

    c#常用系统维护源代码

    "C#常用系统维护源代码"这个主题涵盖了使用C#进行系统管理、监控和优化的各种实用代码示例。这些源代码可以帮助开发者创建高效、可靠的系统工具,提升系统维护的工作效率。 一、系统信息获取 在系统维护中,首先...

    曲线拟合&&线性回归(C#)

    可能的方法包括收集历年高考分数数据,通过线性回归分析找出影响成绩的关键因素(如学习时间、模拟考试成绩等),然后用这个模型预测未来学生的高考表现。当然,如果数据非线性,可以使用更高阶的多项式回归或曲线...

    C#工作中常用的基础知识面试题(二)

    【C#基础知识面试题解析】 在C#编程中,掌握基础是至关重要的,尤其是在面试时。以下是一些常见的C#面试问题及解答: 66. 软件开发过程一般有几个阶段?每个阶段的作用? 软件开发通常包括五个主要阶段: 1. 需求...

    C#人脸智能识别代码

    在C#中进行人脸识别,通常会借助开源库或SDK,如OpenCV、Emgu CV、Microsoft Cognitive Services的人脸API等。这些库提供了丰富的接口和函数,使得开发者能够快速构建人脸识别系统。 1. OpenCV与Emgu CV:这两个是...

    c#.net开发的客户管理系统

    3. 用户界面层:C#.NET提供了丰富的控件和API,可以快速构建出美观且易用的用户界面。例如,使用Windows Forms或WPF创建交互式的表单,展示客户信息,提供数据输入和查询功能。 4. 异步编程:C#.NET引入了async/...

    cSharp-USART.rar_C#控制硬件_c# usart通信_c# 网卡信息_c# 硬件控制_fenceo1i

    描述中提到“个人搜集的c# 控制硬件程序,很不错”,暗示这个压缩包包含了一些C#编写的实际硬件控制代码,可能是用于不同类型的硬件设备,如PLC(可编程逻辑控制器)、手机、电子秤等。C#作为一门强大的编程语言,...

    UnityAPI.zip

    二、常用API介绍 1. **Transform组件**:是所有Unity对象的基本属性,包括位置(Position)、旋转(Rotation)和缩放(Scale)。通过Transform类,我们可以实现对象的动态移动、旋转和缩放。 2. **Camera组件**:...

    C#内存释放-线程控制-线程启动-线程暂停

    C#不提供直接的线程暂停API,但可以通过共享变量或信号量(如`ManualResetEvent`)来间接实现。 例如,一个线程可能在执行到特定点时检查一个共享标志,如果该标志指示应暂停,它就会进入等待状态。其他线程可以...

    C#多年累积类库

    标题中的"C#多年累积类库"表明这是一份包含了作者在C#编程语言中长期实践和积累的自定义类库。这些类库通常是为了提高开发效率、解决常见问题或者实现特定功能而创建的,可能包括各种实用工具类、数据处理模块、网络...

    c#对象验证框架

    在.NET开发环境中,C#是一种常用的编程语言,而对象验证是软件开发中的重要环节,确保数据的正确性和一致性。一个有效的对象验证框架可以帮助开发者轻松地处理这些验证逻辑,提高代码的可读性和可维护性。"c#对象...

    C#处理json数据

    本文将基于提供的文件信息,深入探讨C#中处理JSON数据的常用技术和实践,包括从前端收集JSON数据到后端解析和操作JSON数据的全过程。 #### JSON数据在C#中的处理 ##### 前台收集JSON数据 在前端,通常使用Ajax技术...

    c#网站爬虫

    C#中常用的HTML解析库有HtmlAgilityPack和AngleSharp,它们提供API来解析DOM树,查找特定元素,提取文本或属性值。 3. **异步编程**:为了提高爬虫效率,通常会并发处理多个请求。C#的异步编程模型(基于`async/...

    博客园c#文章精华2

    ### C#的6种常用集合类大比拼 #### 集合与数组的区别 - **固定大小**:数组在创建时必须指定其大小,并且这个大小在其生命周期内是不可改变的。这意味着如果需要存储的数据量发生变化,那么可能需要重新创建一个新...

    C# 基于ModBus RTU通讯协议,使用RS-485获取气象站数据

    在本文中,我们将深入探讨如何使用C#编程语言,基于ModBus RTU通讯协议通过RS-485接口从气象站获取数据。首先,我们需要理解RS-485是一种广泛用于工业控制系统的串行通信标准,它允许多点通信且传输距离相对较远,...

Global site tag (gtag.js) - Google Analytics