- 浏览: 1078796 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace hooktest01 { public partial class Form1 : Form { [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 CreateRemoteThread(IntPtr hwnd, int attrib, int size, int address, int par, int flags, int threadid); [DllImport("kernel32.dll")] public static extern Int32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); [DllImport("kernel32.dll")] public static extern Boolean VirtualFree(IntPtr lpAddress, Int32 dwSize, Int32 dwFreeType); Process pname; UInt32 INFINITE = 0xFFFFFFFF; Int32 PAGE_EXECUTE_READWRITE = 0x40; Int32 MEM_COMMIT = 0x1000; Int32 MEM_RESERVE = 0x2000; Int32 MEM_RELEASE = 0x8000; Int32 AllocBaseAddress; IntPtr hwnd; string dllname; Int32 Pid; Boolean ok; Int32 loadaddr; IntPtr ThreadHwnd; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { if (textBox1.Text == "" || textBox1.Text == null) { MessageBox.Show("Pid is null"); return; } if (textBox2.Text == "" || textBox2.Text == null) { MessageBox.Show("dll name is null"); return; } Pid = Int32.Parse(textBox1.Text); dllname = textBox2.Text; } catch(Exception error) { MessageBox.Show(error.Message); return; } try { pname = Process.GetProcessById(Pid); hwnd = pname.Handle; } catch(Exception error) { //当标示pid的进程不存在时发生异常; MessageBox.Show (error.Message); return; } AllocBaseAddress= VirtualAllocEx(hwnd, 0, dllname.Length + 1, MEM_COMMIT+ MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (AllocBaseAddress == 0) { MessageBox.Show("virtualallocex fail"); return; } ok=WriteProcessMemory(hwnd, AllocBaseAddress, dllname, dllname.Length + 1,0); if (!ok) { MessageBox.Show("writeprocessmemory fail"); return; } loadaddr = GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA"); if (loadaddr == 0) { //取得LoadLibraryA的地址失败时返回 MessageBox.Show("get loadlibraryA fail"); return; } ThreadHwnd=CreateRemoteThread(hwnd, 0, 0, loadaddr, AllocBaseAddress,0, 0); if (ThreadHwnd ==IntPtr.Zero) { MessageBox.Show("createremotethread fail"); return; } WaitForSingleObject(ThreadHwnd, INFINITE); MessageBox.Show("ok ,you can check now!!!"); VirtualFree(hwnd, 0, MEM_RELEASE); //下面开始枚举模块列表; ProcessModuleCollection pmodule = pname.Modules; foreach (ProcessModule processm in pmodule) { listBox1.Items.Add(processm.FileName); } pname.Dispose(); } //进程 句柄 } }转自:http://blog.csdn.net/pandyer/archive/2009/01/06/3719836.aspx
发表评论
-
策略模式
2010-10-08 16:34 1174一、概念 策略模式(Strategy):它定义了一系 ... -
C#获取返回错误码
2010-05-21 17:59 1813[DllImport("TestWin32Dl ... -
VS.NET 开发Windows服务的步骤
2010-05-20 14:25 1606在很多应用中需要做windows服务来在一些后台操作,比如监视 ... -
c# 允许服务与桌面交互
2010-05-20 14:20 2707我们写一个服务,有时候要让服务启动某个应用程序,就要修 ... -
C#单例模式的三种写法
2010-05-19 15:58 48576第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, ... -
C#中获取我的文档系统文件夹路径
2010-05-17 15:29 2274本技巧使用GetFolderPath方法来获取指向由指定枚 ... -
C#自定义事件的步骤介绍
2010-05-13 17:54 3299通常C#自定义事件有下面的几个步骤: ... -
使用反射机制遍历对象中的属性名及属性值
2010-05-03 16:20 2846首先描述一种情景,当给你一个VO类(这个类是映射到数据库的表 ... -
C#的逆向工程-IL指令集
2010-04-30 10:28 1689一些 IL 语言解释: ... -
使用SqlHelper时“阅读器关闭时read的尝试无效”的解决方法
2010-04-20 14:54 1819原SqlHelper类中ExecuteReader方法体 ... -
C# 删除文件夹
2009-12-31 11:28 2568/// <summary> ... -
System.Windows.Forms.Timer和System.Timers.Timer的区别 [转]
2009-12-16 23:44 5208.NET Framework里面提供了三种Timer: ... -
关于var1=var2=something赋值语句的思考
2009-11-18 16:16 1245刚才在阅读《c#本质论》一书时,开头有提到var1=var2= ... -
C#使textbox滚动到最新一行
2009-11-16 12:33 2556方法1: textBox.Text += " ... -
Invoke()/BeginInvoke()区别
2009-11-15 17:43 7234查看MSDN如下: Control..::.Inv ... -
Invoke 和 BeginInvoke 的真正涵义
2009-11-15 17:37 1330BeginInvoke 方法真的是新开一个线程进行异步调用 ... -
编写安全的多线程C#程序
2009-11-15 01:24 1908与多线程相关的两个常见的需要解决的问题是:临界资源保护和线 ... -
线程,同步与锁——Lock你到底锁住了谁
2009-11-15 01:18 1596线程在多核时代的优势月来越明显,多线程编程的学习也提上议事日程 ... -
关于lock(this)的说明及用法
2009-11-15 01:16 5361一. 为什么要lock,lock了 ... -
C# 3.0新特性之扩展方法
2009-11-09 17:02 988C#3.0扩展方法是给现有类型添加一个方法。现在类型既可是基本 ...
相关推荐
C#没有自动调用WIN32的一些API函数,我们可以手动添加内核库到我们自己的代码中,从而实现调用...此方法不仅仅用于远程线程注入,还可以用于从MFC转C#过程中不知道如何用C#实现功能,但有知道如何用MFC实现功能的方法。
标题 "C#版DLL注入" 描述了一个使用C#编程语言实现动态链接库(DLL)注入的技术。DLL注入是一种在不修改目标程序源代码的情况下,将自定义的DLL功能加载到另一个正在运行的进程中的技术。这种方法常用于调试、监控、...
标题中的“纯C# 托管与非托管DLL注入 FastWin32源码”涉及到的是在C#编程环境中,如何实现对Windows系统进行DLL注入的技术。DLL注入是一种技术,允许一个进程将动态链接库(DLL)加载到另一个进程中,从而在目标进程...
在这个主题中,我们将深入探讨C#实现DLL注入的过程,以及如何编写C#注入器源码。 首先,DLL注入的核心在于创建一个线程,该线程在目标进程中执行,从而能够调用注入的DLL中的函数。在C#中,我们可以使用以下关键...
DLL注入是一种技术手段,通过将一个DLL文件的内容加载到另一个正在运行的进程内存空间中,使得目标进程能够执行注入的DLL中的函数,从而达到控制或扩展其功能的目的。 在"简单的DLL注入线程"这个主题中,我们主要...
在远程进程注入中,EasyHook可以帮助我们将自定义的DLL注入到目标进程中,从而实现对目标进程内部API的Hook。 首先,我们需要了解远程进程注入的基本流程: 1. 获取目标进程信息:使用`System.Diagnostics.Process`...
远程线程注入通常涉及到创建一个包含要执行功能的DLL。这个DLL可以包含自定义函数,或者实现特定的系统调用。 3. **打开进程句柄**:使用`OpenProcess`函数获取目标进程的句柄。这个句柄用于后续操作,如读写进程...
本案例中,我们关注的是一个用C#编写的DLL注入器,名为"C# DLL注入器",其特点是程序在打开时就能直接将指定的DLL注入到目标进程中。源码是基于Visual Studio 2010开发的,并且依赖于.NET Framework 2.0。 首先,...
易语言远程DLL注入源码是一种在编程领域中用于实现远程控制、监控或者调试的技术,它涉及到Windows操作系统底层的进程通信和动态链接库(DLL)的加载机制。在本例中,"易语言"是一种中国本土开发的编程语言,旨在...
1. **远程代码执行**:DLL注入工具允许开发者在不修改目标程序源代码的情况下,向目标进程注入自定义的DLL,执行特定的函数或操作,例如监控、调试、增强功能等。 2. **跨平台兼容性**:该工具支持x86和x64架构,这...
4. **启动服务**:为了使远程注入生效,你需要创建一个服务或后台进程,它负责接收远程请求并将代理类注入到目标进程中。 5. **注入代码**:通过`EasyHook.RemoteHooking.Inject`方法,将代理类的实例注入到目标...
在C# WinForm应用开发中,动态加载DLL是一种常见的需求,尤其当需要根据不同的环境或配置来使用不同的功能模块时。动态加载库可以提高代码的灵活性,减少对应用程序的依赖性,使得更新或扩展功能变得更为便捷。下面...
易语言虽然在某些方面可能不如C++或C#等语言强大,但对于初学者来说,它的友好性使得学习DLL注入成为可能。通过本教程的学习,你可以掌握如何在易语言环境下实现DLL注入,进一步提升自己的编程能力。
内存DLL注入模块是一种在计算机编程中常见的技术,主要用于在运行时将动态链接库(DLL)加载到另一个进程的内存空间中。在易语言环境中,这一技术可以帮助开发者实现跨进程通信、功能扩展、调试或者恶意软件行为。...
《深入解析.Net远程注入工具SuperSpy》 在计算机科学领域,远程注入技术是一种常见的系统渗透测试和调试手段,它允许程序在目标进程中无感知地执行代码。本文将深入探讨.Net框架下的远程注入工具——SuperSpy,揭示...
C#是微软开发的一种面向对象的编程语言,以其丰富的库和易读性而受到开发者喜爱,虽然它并非传统的系统级编程语言,但通过.NET Framework和一些底层API调用,C#同样可以实现如DLL注入这样的系统级操作。 DLL注入...
c# 整合c++远程注入 api重写等 记事本应用实例等 是值得一看的小工具
clrinject将C#EXE或DLL程序集注入任何其他进程的CLR运行时和AppDomain中。 然后,注入的程序集可以访问注入者进程的类的静态实例,从而影响其内部状态。 clrinject将C#EXE或DLL程序集注入任何其他进程的CLR运行时...
在编程实践中,可能需要使用C++、C#或Python等语言,配合Windows API调用来实现DLL注入。例如,C++中可以使用`CreateRemoteThread`函数创建远程线程,如下: ```cpp LPTHREAD_START_ROUTINE lpStartAddress = ...
【标题】:“2016121916232316011_HowToTwo_dll注入_源码.zip”这个文件名暗示了我们即将探讨的是关于DLL注入的技术及其源代码。DLL(动态链接库)注入是一种常见的系统编程技术,它允许一个进程在另一个进程中加载...