将 C# 转换为涉及 DllImport 的 Powershell
Posted
技术标签:
【中文标题】将 C# 转换为涉及 DllImport 的 Powershell【英文标题】:Converting C# into Powershell with DllImport involved 【发布时间】:2022-01-18 07:51:39 【问题描述】:我最近一直在做一个小项目,看看是否可以进行一些内存编辑以使用 PowerShell。我在 C# 中编写了一个不需要管理权限的小脚本,运行时会在 Hill Climb Racing 中为您提供最大的硬币和钻石。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace HCRtest2
public class Programmmm
public static void Main()
[DllImport("kernel32.dll")]
static extern bool WriteProcessMemory(IntPtr hProcess, long lpBaseAddress, byte[] lpBuffer, uint nSize, out uint lpNumberOfBytesRead);
long BaseAddress;
IntPtr ProcessHandle;
Process process = Process.GetProcessesByName("HillClimbRacing")[0];
if (process.Handle.ToInt64() != 0L)
BaseAddress = process.MainModule.BaseAddress.ToInt64();
ProcessHandle = process.Handle;
uint num = 0U;
WriteProcessMemory(ProcessHandle, BaseAddress + 0x28CAD4, BitConverter.GetBytes(2147483647), 4U, out num);
WriteProcessMemory(ProcessHandle, BaseAddress + 0x28CAEC, BitConverter.GetBytes(2147483647), 4U, out num);
我现在的挑战是看看我是否能找到一种方法在我的学校笔记本电脑上执行此代码.我一直在做很多研究,但找不到将此脚本移植到 PowerShell 的好方法。如果有人有什么好主意,请告诉我,因为这让我现在很紧张。
【问题讨论】:
如果一个操作系统函数需要某些权限,不管你是从 C# 还是 Powershell 调用它,你只需要这些权限。 【参考方案1】:This website 提供了有关如何在 powershell 会话中播放 c# 的答案。
$code = @"
using System;
namespace HelloWorld
public class Program
public static void Main()
Console.WriteLine("Hello world!");
"@
Add-Type -TypeDefinition $code -Language CSharp
iex "[HelloWorld.Program]::Main()"
【讨论】:
以上是关于将 C# 转换为涉及 DllImport 的 Powershell的主要内容,如果未能解决你的问题,请参考以下文章
将 MediaInfo DLL 与 C# DLLImport 一起使用
如何使用 DLLImport 将字符串从 C# 传递到 C++(以及从 C++ 到 C#)?