麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

使用C#調用系統API實現內存注入的代碼

2020-01-24 03:43:10
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

//首先導入命名空間
using System.Runtime.InteropServices;
/// <summary>
/// 在指定進程的虛擬地址空間中保留或開辟一段區域..除非MEM_RESET被使用,否則將該內存區域初始化為0.
/// </summary>
/// <param name="process">需要在其中分配空間的進程的句柄.這個句柄必須擁有PROCESS_VM_OPERATION訪問權限</param>
/// <param name="pAddress">想要獲取的地址區域.一般用NULL自動分配</param>
/// <param name="size">要分配的內存大小.字節單位.注意實際分 配的內存大小是頁內存大小的整數倍</param>
/// <param name="type">內存分配的類型</param>
/// <param name="protect">內存頁保護</param>
/// <returns>執行成功就返回分配內存的首地址,失敗返回0。</returns>
[DllImport("kernel32.dll")] //聲明API函數
public static extern int VirtualAllocEx(IntPtr process, int pAddress, int size, int type, int protect);
/// <summary>
/// 寫入某一進程的內存區域。入口區必須可以訪問,否則操作將失敗
/// </summary>
/// <param name="process">進程句柄</param>
/// <param name="baseAddress">要寫的內存首地址</param>
/// <param name="buffer">指向要寫的數據的指針(數據當前存放地址)。</param>
/// <param name="nSize">要寫入的字節數。</param>
/// <param name="lpNumberOfBytesWritten">實際數據的長度</param>
/// <returns>非零表示成功,零表示失敗</returns>
[DllImport("kernel32.dll")]
public static extern int WriteProcessMemory(IntPtr process, int baseAddress, string buffer, int nSize, int lpNumberOfBytesWritten);
/// <summary>
/// 檢索指定的動態鏈接庫(DLL)中的輸出庫函數地址
/// </summary>
/// <param name="hModule"> DLL模塊句柄 包含此函數的DLL模塊的句柄。LoadLibrary或者GetModuleHandle函數可以返回此句柄。</param>
/// <param name="lpProcName">函數名 包含函數名的以NULL結尾的字符串,或者指定函數的序數值。如果此參數是一個序數值,它必須在一個字的底字節,高字節必須為0。</param>
/// <returns>調用成功,返回DLL中的輸出函數地址,調用失敗,返回0。得到進一步的錯誤信息,調用函數GetLastError。</returns>
[DllImport("kernel32.dll")]
public static extern int GetProcAddress(int hModule, string lpProcName);
/// <summary>
/// 獲取一個應用程序或動態鏈接庫的模塊句柄
/// </summary>
/// <param name="moduleName">指定模塊名,這通常是與模塊的文件名相同的一個名字</param>
/// <returns>如執行成功成功,則返回模塊句柄。零表示失敗</returns>
[DllImport("kernel32.dll")]
public static extern int GetModuleHandleA(string moduleName);
/// <summary>
/// 創建一個在其它進程地址空間中運行的線程(也稱:創建遠程線程).
/// </summary>
/// <param name="process">目標進程的句柄</param>
/// <param name="threadAttributes">指向線程的安全描述結構體的指針,一般設置為0,表示使用默認的安全級別</param>
/// <param name="stackSize">線程堆棧大小,一般設置為0,表示使用默認的大小,一般為1M</param>
/// <param name="startAddress">線程函數的地址</param>
/// <param name="parameter">傳給線程函數的參數</param>
/// <param name="creationFlags">線程的創建方式(0表示線程創建后立即運行 CREATE_SUSPENDED 0x00000004以掛起方式創建 創建不會運行,直到調用 ResumeThread函數)</param>
/// <param name="threadid">指向所創建線程句柄的指針,如果創建失敗,該參數為0</param>
/// <returns>如果調用成功,返回新線程句柄,失敗返回0</returns>
[DllImport("kernel32.dll")]
public static extern int CreateRemoteThread(IntPtr process, int threadAttributes, int stackSize, int startAddress, int parameter, int creationFlags, int threadid);

復制代碼 代碼如下:

/// <summary>
/// 根據進程名稱獲取進程
/// </summary>
/// <param name="ProcessName">進程名稱</param>
/// <returns></returns>
public Process GetProcessByName(string ProcessName)
{
//取得所有進程
Process[] pname = Process.GetProcesses();
//遍歷進程
foreach (Process name in pname)
{
//如果查找到進程名稱 返回
if (name.ProcessName.ToLower().IndexOf(ProcessName) != -1)
return name;
}
return null;
}

復制代碼 代碼如下:

public void killDll()
{
string dllName = "c://text.dll";
int dlllength = dllName.Length + 1;
//這里以記事本為例
Process processName = GetProcessByName("notepad");
//如果查找到記事本進程,那么下面開始注入
if (processName != null)
{
//申請內存空間,執行成功就返回分配內存的首地址,不成功就是0。
int baseaddress = VirtualAllocEx(processName.Handle, 0, dlllength, 4096, 4);
if (baseaddress == 0)
{
MessageBox.Show("申請內存空間失敗!");
return;
}
//寫內存
int result = WriteProcessMemory(processName.Handle, baseaddress, dllName, dlllength, 0);
if (result == 0)
{
MessageBox.Show("寫內存失敗!");
return;
}
//取得loadlibarary在kernek32.dll地址
int procAddress = GetProcAddress(GetModuleHandleA("Kernel32"), "LoadLibraryA");
if (procAddress == 0)
{
MessageBox.Show("無法取得函數的入口點!");
return;
}
//創建遠程線程。
result = CreateRemoteThread(processName.Handle, 0, 0, 0, baseaddress, 0, 0);
if (result == 0)
{
MessageBox.Show("創建遠程線程失敗!");
return;
}
else
MessageBox.Show("已成功注入dll!");
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美国产第一页 | 久久网一区二区 | 久久国产精品久久精品国产演员表 | 国产一区视频在线观看免费 | 激情综合婷婷久久 | 黄色片网站在线看 | 久久一区三区 | 高清国产免费 | 久久久一区二区精品 | 成人免费观看49www在线观看 | 亚洲免费高清 | 成人在线免费小视频 | 欧美黄色一级片在线观看 | 91精品国产92久久久久 | 一区二区三区小视频 | 欧美一区2区三区4区公司二百 | 精品一区二区三区在线观看国产 | 精品国产中文字幕 | 中文字幕11 | 综合在线视频 | 亚洲成人久久精品 | 亚洲第五色综合网 | 亚洲一区二区在线免费 | 国产一级做a爱片在线看免 2019天天干夜夜操 | 九九视频精品在线 | 久久久成人免费视频 | 涩涩天堂 | 美国黄色毛片女人性生活片 | 一级性生活免费视频 | 欧美在线观看禁18 | 国产系列 视频二区 | 久久一区三区 | h视频免费观看 | 狠狠干最新网址 | 久草在线资源福利站 | 渔夫荒淫艳史 | 嫩草91在线| 超碰人人做人人爱 | 涩涩激情网 | 美女黄色毛片免费看 | 18pao国产成人免费视频 |