Tag: 指针

在C#中使用Cheat Engine中的指针

关于该计划 我有一个程序写入我正在试验的游戏的记忆。 当我使用常规静态地址时,代码对我很有用,但由于某些原因,一旦找到工作指针,我似乎无法做到这一点。 例如,我在指针扫描几次后在Cheat Engine中找到了这个: 每次加载游戏并编辑值时,此地址都有效。 问题是我不明白如何在我的程序中使用它。 这是我尝试插入值的声明变量: bool UnlimitedAmmo = false; string AmmoPointer = “031B7324”; // <— The address int[] AmmoOffset = { 0x2c, 0x1e8, 0x3c8, 0x6d4, 0x508 }; // <— It's pointers int AmmoToFill = 1337; // <— The Amount of ammo to give 我传递这些变量如下: MyMemory.ReadProcess = MyProcess[0]; MyMemory.Open(); int PointerAddress = HexToDec(AmmoPointer); […]

.NET中更快(不安全)的BinaryReader

我遇到了一个情况,我有一个非常大的文件,我需要从中读取二进制数据。 因此,我意识到.NET中的默认BinaryReader实现非常慢。 用.NET Reflector查看它后,我发现了这个: public virtual int ReadInt32() { if (this.m_isMemoryStream) { MemoryStream stream = this.m_stream as MemoryStream; return stream.InternalReadInt32(); } this.FillBuffer(4); return (((this.m_buffer[0] | (this.m_buffer[1] << 8)) | (this.m_buffer[2] << 0x10)) | (this.m_buffer[3] << 0x18)); } 这让我觉得非常低效,想到自32位CPU发明以来计算机是如何设计用于32位值的。 所以我使用这样的代码创建了我自己的(不安全的)FastBinaryReader类: public unsafe class FastBinaryReader :IDisposable { private static byte[] buffer = new byte[50]; //private Stream baseStream; […]

在应用程序c#之间发送套接字

我想知道是否有一种方法,你有一个.net应用程序名称appA,它接收一个TCP连接器,然后根据一些规则将套接字连接发送到另一个名为appB的.net应用程序。 我知道这违反了许多安全和良好做法,但如果有可能会很有意思。

C#包装器,用于三个指针的数组

我目前正在使用C#包装器来处理Dallmeier Common API灯。 查看上一篇文章: C#wrapper和Callbacks 我已经拥有了几乎所有“包装”但我仍然坚持包含一个包含三个指针数组和一个数组整数的回调: dlm_setYUVDataCllback int(int SessionHandle, void (*callback) (long IPlayerID, unsigned char** yuvData, int* pitch, int width, int height, int64_t ts, char* extData)) function设置回调,以接收当前YUV图像。 参数 SessionHandle:处理当前会话。 返回 PlayerID(请参阅回调)。 回调 – IPlayerId:Player对象的id – yuvData:指向Y,U和V部分图像的三个指针的数组 使用的YUV格式是YUV420平面(未打包)。 char * y = yuvData [0]; char * u = yuvData [1]; char * v = yuvData [2]; […]

添加实例以引用另一个实例中的字段

对不起,这个问题可能以不同的forms存在,但我真的在各处搜索,看不到它。 我曾在C ++工作,习惯了指针。 我用C#模拟代码替换我的逻辑时遇到问题。 这是我的C#代码: class Parent { public Parent A { get; set; } public Parent B { get; set; } } static void Main(string[] args) { Parent P1 = new Parent(); Parent X = new Parent(); Parent[] array = new Parent[10]; array[0] = P1; array[1] = P1.A; array[2] = P1.B; array[1]= X; //I […]

C#引用成员变量

在C#中,有没有办法将引用作为成员变量保存在对象中(如C ++中的对象指针),而不仅仅是作为参数? 编辑:如何将指针或对象的引用作为成员变量?

编组结构,嵌入指针从C#到非托管驱动程序

我正在尝试使用P / Invoked DeviceIoControl()调用将C#(.NET Compact Framework 3.5)与Windows CE 6 R2流驱动程序连接。 对于其中一个IOCTL代码,驱动程序需要一个DeviceIoControl输入缓冲区,该缓冲区是包含嵌入指针的以下非托管结构: typedef struct { DWORD address; const void* pBuffer; DWORD size; // buffer size } IOCTL_TWL_WRITEREGS_IN; 我在C#中定义了结构: [StructLayout(LayoutKind.Sequential)] public struct IoctlWriteRegsIn { public uint Address; public byte[] Buffer; public uint Size; } 和我的P / Invoke签名为: [DllImport(“coredll.dll”, CharSet = CharSet.Unicode, SetLastError = true)] static extern bool […]

查看.NET框架中的EqualsHelper方法

我正在查看.NET框架的String类的Equals方法实现,发现它使用EqualsHelper方法。 我发现它确实是一种非常酷且有效的方法,但是我发现了一些非常有用的东西,为什么它们通过除法运算来增加指针(或产生偏移),如: *(long*)(ptr + (IntPtr)8 / 2), ptr += (IntPtr)4 / 2; 等等。 谢谢!

C#释放IntPtr引用的内存

我正在使用一些非托管代码,它将指针(IntPtr)返回给大图像对象。 我使用引用但在完成图像后,我需要释放指针引用的内存。 目前,唯一释放内存的是关闭我的整个应用程序。 我需要能够从我的应用程序中释放内存。 这是对内存的分配。 hbitmap是返回的指针,需要取消分配。 [DllImport(“twain_32.dll”, EntryPoint = “#1”)] public static extern TwainResult DsImageTransfer( [In, Out] Identity origin, [In] Identity dest, DataGroup dg, DataArgumentType dat, Message msg, ref IntPtr hbitmap);

使用C#指针

c#如何利用指针? 如果C#是托管语言并且垃圾收集器在防止内存泄漏和正确释放内存方面做得很好,那么在c#中使用指针会有什么影响以及它们的“ 不安全 ”是什么?