dll基本注入源码分析

这篇博客详细解析了DLL注入的过程,包括提升调试权限、打开远程进程、分配内存、复制DLL路径、调用LoadLibraryA函数创建远程线程等步骤。提供了完整的源代码示例,展示了如何在目标进程中注入DLL。
摘要由CSDN通过智能技术生成

下面的源代码将会对Testdll.dll进行调用

这个一个隐藏自己进程的基本方法

取得权限并进行注入的思路是最重要的

// ExcuteDllTest.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include <windows.h>

//提升到debug权限
int EnableDebugPriv(const char * name)
{
 HANDLE hToken;
 TOKEN_PRIVILEGES tp;
 LUID luid;
 //打开进程令牌环
 if(!OpenProcessToken(GetCurrentProcess(),//取得句柄的令牌 OpenProcessToken()函数
     TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
     &hToken) )
 {
  printf("OpenProcessToken error./n");
  return 1;
 }
 //获得进程本地唯一ID
 if(!LookupPrivilegeValue(NULL,name,&luid) )//一个权限对应的LUID值
 {
  printf("LookupPrivilege error!/n");
 }

 tp.PrivilegeCount = 1;
 tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 tp.Privileges[0].Luid = luid;
 //调整权限
 if(!AdjustTokenPrivileges(hToken,0,&tp,size

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
易语言是一种基于Visual Basic语法的编程语言,通过易语言可以方便地实现Windows下的各种功能。DLL注入是一种实现程序代码注入进程的技术,通过DLL注入可以在目标进程中运行自己编写的代码,以达到扩展或修改目标进程功能的目的。 下面是一个简单的易语言DLL注入源码示例: 函数 Declare函数名 CDECL别名 函数类型 字符串 文件名 参数列表 函数库文件名 参数类型 结果; // 声明LoadLibrary函数 Declare Function LoadLibraryA cdecl alias "LoadLibraryA" (sLibName As String) As Long // 声明GetProcAddress函数 Declare Function GetProcAddress cdecl alias "GetProcAddress" (hModule As Long, sProcName As String) As Long // 声明CreateRemoteThread函数 Declare Function CreateRemoteThread cdecl alias "CreateRemoteThread" (hProcess As Long, lpThreadAttributes As Long, dwStackSize As Long, lpStartAddress As Long, lpParameter As Long, dwCreationFlags As Long, lpThreadId As Long) As Long Sub 注入DLL() Dim lProcessHandle As Long Dim lRemoteThread As Long Dim lModuleName As Long Dim lProcAddress As Long ' 打开目标进程,获取进程句柄 lProcessHandle = OpenProcess(&H1F0FFF, False, 目标进程ID) ' 在目标进程中申请一块内存,用于存放DLL路径 lModuleName = VirtualAllocEx(lProcessHandle, 0, Len(DLL路径), 4096, 4) ' 将DLL路径写入到目标进程的内存中 WriteProcessMemory lProcessHandle, lModuleName, DLL路径, Len(DLL路径), NumBytesWritten ' 获取LoadLibrary函数的地址 lProcAddress = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") ' 在目标进程中创建远程线程,回调到LoadLibrary函数 lRemoteThread = CreateRemoteThread(lProcessHandle, 0, 0, lProcAddress, lModuleName, 0, 0) ' 关闭进程句柄 CloseHandle lProcessHandle End Sub 以上是一个基本的易语言DLL注入源码示例。通过调用相关的Windows API函数,实现了在目标进程中注入DLL的流程。需要替换相应的目标进程ID和DLL路径,即可实现DLL注入的功能。这段源码具有一定的通用性,但是需要根据实际情况进行修改和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值