c#也谈dll注入hack214的专栏csdn博客.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C# C# 也谈 dll 注入 - haCk214 的专栏 - CSDN 博客 C# C# 也谈 dll 注入 - haCk214 的专栏 - CSDN 博客 hack214 因为以前的代码不太规范,所 以我又重新写了一遍, 面的代码是新的 ,我给的那个链接是 旧代码) 前段时间研究了了一下 dll 注入,虽然这项技术已经被写烂 了,而且现在而言,这项技术已经落后了,基本上编程都到 内核的级别了,不过再过时的技术对于我们刚学编程的菜鸟 来说都是新鲜的,我们还是要一点一点的来学,先把基础的 东西学会了,以后才能成为大鸟吗! ,我开始用 vb 编了一个 dll 注入的程序,事实上 dll 注入很简单,无非就是调用 virtualAllocEx,WriteProcessMemory,OpenProcess,Create RemoteThread 等API函数,因为我是学c#的,所以也想看 F C#这方面的文章,但在网上找了半天,没有找到一篇, 也许是C#刚兴起的缘故,学C#的并不多,没办法,只好自 己移植一下,因为凡是用到 API 函数,所有的编程的语言都 是相同的,这就为我们的移植带来了方便, 学C#的一般应该 对API的调用概念很淡,因为C#通常不会去调用 API函数, 因为这些已经被封装了,在 vb,vC++ 等语言中要结束一个进 程,首先就必须要得到这个进程的句柄,然后才能进行相应 的关闭进程等操作, 得到句柄要用到 OpenProCess API 函数, [DllImport(kernel32.dll)] [DllImport(kernel32.dll)] CreateRemoteThread(IntPtr hwnd, int attrib, int size, int CreateRemoteThread(IntPtr hwnd, int attrib, int size, int address, int par, int flags, int threadid); 结束进程要用到 TerminateProcess API 函数,但是在 c# 中 你根本不需要知道这些 API 函数就能完成同样的功能, 所以 你要是想了解一下 API 的相关知识,学一点 vb 是一个很好 首先需要加入以下 API 函数: 的选择。好了!下面就开始我们的c# dll 的选择。好了!下面就开始我们的 c# dll 注入之旅吧! [DllImport(kernel32.dll)] public static extern int VirtualAllocEx(IntPtr hwnd, Int32 lpaddress, int size, int type, Int32 tect); [DllImport(kernel32.dll)] public static extern Boolean WriteProcessMemory(IntPtr hwnd, int baseaddress, string buffer, int nsize, int filewriten ); [DllImport(kernel32.dll)] public static extern int GetProcAddress(int hwnd, string lpname); [DllImport(kernel32.dll)] public static extern int GetModuleHandleA(string name); [DllImport(kernel32.dll)] public static extern IntPtr public static extern Int32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); [DllImport(kernel32.dll)] public static extern Boolean VirtualFree(IntPtr lpAddress, Int32 dwSize,Int32 dwFreeType); C#声明API比较复杂,因为是调用非托管的 dll,所以要用 到 DllImport 来调用非托管的 dll, 他还有很多属性在这就不多 说了,网上有很介绍,可以去查一下,不过 c# 调用自身的变 得动态链接库是倒是很方便,直接加个引用就 ok 了,调用 dll 要用的一个引用: using System.Runtime.InteropServices; 这个不要忘了加上,下面是编好的所有代码: using System; using System.Collections.Generic; using System.Co

文档评论(0)

wangyueyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档