FEATURED · 精选文章

MemorySharp 汇编注入实战:用 FASM 编译器在远程进程执行任意代码

发布时间 / 2026/8/19 20:09:57
来源 / 创域科博编辑部
栏目 / 资讯中心
MemorySharp 汇编注入实战:用 FASM 编译器在远程进程执行任意代码 MemorySharp 汇编注入实战用 FASM 编译器在远程进程执行任意代码【免费下载链接】MemorySharpA C# based memory editing library targeting Windows applications, offering various functions to extract and inject data and codes into remote processes to allow interoperability.项目地址: https://gitcode.com/gh_mirrors/me/MemorySharpMemorySharp 是一款基于 C# 的内存编辑库面向 Windows 应用程序开发支持在远程进程中读取和写入数据并通过内嵌的 FASM 编译器实现汇编注入从而执行任意代码。本文将从零开始带你完成一次完整的 MemorySharp 汇编注入实战掌握在远程进程执行任意代码的三种核心写法并理解调用约定的选择技巧。什么是 MemorySharp简单来说MemorySharp 是一个C# 内存编辑库它把繁琐的 Win32 API 调用如ReadProcessMemory、WriteProcessMemory、VirtualAllocEx、CreateRemoteThread等封装成一套简洁、安全的面向对象接口。你只需要几行 C# 代码就能完成 读写远程进程的整数、字符串、结构体等数据 分配与释放远程内存修改内存保护属性 创建、挂起、恢复远程线程获取线程退出码 注入 / 卸载 DLL 模块枚举模块与函数️ 与远程窗口交互模拟键盘鼠标输入⚙️汇编注入编写 FASM 语法汇编注入并在远程进程执行其中汇编注入 远程执行是 MemorySharp 最有魅力的能力之一也是本文的主角。FASM 编译器汇编注入的第一步在远程进程执行任意代码之前必须先解决一个核心问题汇编指令如何变成机器码MemorySharp 内置了FASMFlat Assembler编译器封装在Fasm32Assembler类中源码见 Fasm32Assembler.cs。它的工作非常贴心自动为你的汇编代码添加use3232 位模式指令根据指定的基地址自动生成org 0xXXXXXXXX重定位指令调用 Fasm.NET 完成汇编返回机器码字节数组。这意味着你完全不用关心地址重定位的细节只需要写裸的 mnemonics助记符即可。AssemblyFactory在构造时会自动初始化这个 FASM 编译器参考 AssemblyFactory.cs。第一种写法Inject 注入汇编代码Inject方法负责把汇编代码编译并写入远程进程的指定地址。它有两种常见形态① 注入到指定地址var sharp new MemorySharp(process); // 绑定远程进程 sharp.Assembly.Inject( new[] { push 0, add esp, 4, retn }, someAddress);② 自动分配内存并注入返回地址var memory sharp.Assembly.Inject(mov eax, 66\nretn); // memory.BaseAddress 就是代码所在位置第二种写法最省心Inject内部会先调用Memory.Allocate自动分配一块远程内存再把编译好的机器码写进去并返回一个RemoteAllocation对象相关实现见 MemoryFactory.cs。第二种写法InjectAndExecute 注入并立即执行如果不想分两步InjectAndExecute能一步到位——注入后立刻在远程进程中创建一个新线程来执行这段代码并把线程的退出码返回给你。例如测试代码 AssemblyFactoryTests.cs 中就有这样的例子var ret sharp.Assembly.InjectAndExecuteint( new[] { use32, mov eax, 66, retn }); // ret 66可以看到执行完成后EAX寄存器的值66会作为线程退出码被读回 C# 侧。这就是在远程进程执行任意代码并拿到返回值的标准套路非常适合用来验证一段注入代码是否生效。第三种写法AssemblyTransaction 事务注入推荐如果你要注入的代码较长、需要按顺序拼装多行指令AssemblyTransaction事务模式是更优雅的选择。它把多条 mnemonics 收集起来在对象被释放Dispose时自动完成注入与执行using (var t sharp.Assembly.BeginTransaction()) { t.AddLine(use32); t.AddLine(mov eax, 66); t.AddLine(retn); } // 离开 using 块后代码已自动注入并执行事务支持三个实用特性源码见 AssemblyTransaction.csAddLine/InsertLine追加或插入任意 mnemonics支持格式化字符串autoExecute参数控制释放时是否自动执行设为false可只注入不运行GetExitCodeT()执行结束后取出线程退出码转为任意类型。调用远程函数4 种调用约定汇编注入的终极形态是直接调用远程进程里的 API 函数。不同的函数使用不同的调用约定参数入栈顺序、栈清理责任方都不同MemorySharp 通过CallingConventionSelector自动生成对应的 push / call / add esp 指令封装细节见 CallingConventionSelector.cs。调用约定参数传递栈清理典型场景Cdecl逆序压栈调用方GCC 编译的 C 函数Stdcall逆序压栈被调用方Win32 APIFastcall前两个参数放 ECX / EDX被调用方编译器优化Thiscallthis 指针放 ECX被调用方C 成员函数最常见的用法是调用user32.dll里的MessageBoxAStdcall 约定README 里有一个非常经典的一行调用示例sharp[user32][MessageBoxA] .Execute(CallingConventions.Stdcall, 0, Hello, Title, 0);Execute方法会自动完成参数封送字符串会在远程进程动态分配、调用以及参数清理整个过程对调用方完全透明。你甚至可以用ExecuteT泛型版本直接把返回值取成布尔值或结构体。快速上手完整的实战步骤总结一下一次完整的MemorySharp 汇编注入实战只需要四步绑定进程var sharp new MemorySharp(process);编写汇编用 FASM 语法写 mnemonics注意以retn结尾选择注入方式Inject只注入、InjectAndExecute注入执行或BeginTransaction事务读取结果通过线程退出码EAX取回执行结果。如果需要传参数Execute(address, callingConvention, params dynamic[] parameters)会自动把参数封送到远程进程内存并在执行结束后释放——这部分逻辑封装在 AssemblyFactory.cs 的ExecuteT重载中。安全与合规提醒⚠️ 需要特别强调在远程进程执行任意代码具有极大风险。注入错误代码可能导致目标进程崩溃甚至触发安全软件的拦截。请务必遵守以下原则只在自己拥有或明确授权的程序上进行测试注入前做好数据备份优先使用事务模式便于回滚不要将本教程技术用于游戏外挂、恶意软件等非法用途学习用途建议先用Process.GetCurrentProcess()对自己当前进程做练习。参与开源项目如何协作MemorySharp 采用经典的Git Flow 分支模型组织开发master存放稳定版本develop存放日常开发功能分支、发布分支、热修复分支各有前缀feature-、release-、hotfix-架构图如下如果你也想贡献代码可以克隆仓库后基于develop分支创建自己的功能分支git clone https://gitcode.com/gh_mirrors/me/MemorySharp结语从内置 FASM 编译器自动完成汇编与重定位到Inject、InjectAndExecute、AssemblyTransaction三种注入方式再到 4 种调用约定的自动适配MemorySharp 把在远程进程执行任意代码这件原本需要大量 Win32 编码的复杂工作压缩成了几行直观的 C# 代码。掌握本文的实战流程后无论是做进程互操作、调试辅助还是学习 Windows 内存机制你都有了趁手的工具。希望这篇 MemorySharp 汇编注入实战教程对你有所帮助【免费下载链接】MemorySharpA C# based memory editing library targeting Windows applications, offering various functions to extract and inject data and codes into remote processes to allow interoperability.项目地址: https://gitcode.com/gh_mirrors/me/MemorySharp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻