登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 196|回复: 0

[源码] 易语言注入DLL到指定进程源码

[复制链接]

42

主题

-7

回帖

48

积分

网站编辑

积分
48
发表于 2024-12-28 11:53:58 | 显示全部楼层 |阅读模式
.版本 2

.子程序 注入DLL, 整数型, 公开, 成功返回0,失败返回负值.
.参数 目标进程ID, 整数型, , 即PID
.参数 DLL文件全名, 文本型, , 不含路径,含扩展名,如:MyDLL.dll
.参数 DLL装载路径, 文本型, , 不含名称,如:C:\WINDOWS\SYSTEM32\
.参数 DLL函数名, 文本型, , 子程序的实际名称即可,文本型,区分大小写
.参数 隐藏错误信息, 逻辑型, 可空, 是否在出错时自动调用错误信息框
.局部变量 TrueAddress, 整数型
.局部变量 Code, 字节集
.局部变量 pHandle, 整数型
.局部变量 dwSize, 整数型
.局部变量 DLLName, 文本型
.局部变量 lpbuf, 整数型
.局部变量 Ret, 整数型
.局部变量 Handle, 整数型
.局部变量 hThread, 整数型
.局部变量 SECURITY, SECURITY_ATTRIBUTES
.局部变量 dwRet, 整数型
.局部变量 RemotBaseadDr, 整数型
.局部变量 LocalbaseadDr, 整数型
.局部变量 Path, 文本型

pHandle = OpenProcess (2035711, 0, 目标进程ID)
.如果真 (pHandle = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#打开进程失败), #错误图标, 提取错误标题 (#打开进程失败))
    .如果真结束
    返回 (提取错误代码 (#打开进程失败))
.如果真结束
DLLName = DLL文件全名
Path = 选择 (取文本右边 (DLL装载路径, 1) = “\”, DLL装载路径, DLL装载路径 + “\”) + DLLName
dwSize = 取文本长度 (Path) + 1
lpbuf = VirtualAllocEx (pHandle, 0, dwSize, 4096, 64)
.如果真 (lpbuf = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#分配内存失败), #错误图标, 提取错误标题 (#分配内存失败))
    .如果真结束
    CloseHandle (pHandle)
    返回 (提取错误代码 (#分配内存失败))
.如果真结束
Ret = WriteProcessMemory (pHandle, lpbuf, 到字节集 (Path) + { 0 }, dwSize, 0)
.如果真 (Ret = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#写内存失败), #错误图标, 提取错误标题 (#写内存失败))
    .如果真结束
    VirtualFreeEx (pHandle, lpbuf, dwSize, 16384)
    返回 (提取错误代码 (#写内存失败))
.如果真结束
Handle = GetModuleHandle (“kernel32.dll”)
Handle = GetProcAddress (Handle, “LoadLibraryA”)
hThread = CreateRemoteThread (pHandle, SECURITY, 0, Handle, lpbuf, 0, 0)
WaitForSingleObject (hThread, -1)
GetExitCodeThread (hThread, dwRet)
RemotBaseadDr = dwRet
VirtualFreeEx (pHandle, lpbuf, dwSize, 16384)
CloseHandle (hThread)
LocalbaseadDr = LoadLibraryEx (Path, 0, 0)
Handle = GetProcAddress (LocalbaseadDr, DLL函数名)
.如果真 (Handle = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#取函数地址失败), #错误图标, 提取错误标题 (#取函数地址失败))
    .如果真结束
    FreeLibrary (LocalbaseadDr)
    CloseHandle (pHandle)
    返回 (提取错误代码 (#取函数地址失败))
.如果真结束
TrueAddress = RemotBaseadDr + Handle - LocalbaseadDr
FreeLibrary (LocalbaseadDr)
lpbuf = VirtualAllocEx (pHandle, 0, 5, 4096, 64)
.如果真 (lpbuf = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#分配内存失败), #错误图标, 提取错误标题 (#分配内存失败))
    .如果真结束
    CloseHandle (pHandle)
    返回 (提取错误代码 (#分配内存失败))
.如果真结束
Code = { 233 } + 到字节集 (到整数 (TrueAddress - lpbuf - 5))
Ret = WriteProcessMemory (pHandle, lpbuf, Code, 5, 0)
.如果真 (Ret = 0)
    .如果真 (取反 (隐藏错误信息))
        信息框 (提取错误信息 (#写内存失败), #错误图标, 提取错误标题 (#写内存失败))
    .如果真结束
    VirtualFreeEx (pHandle, lpbuf, 5, 16384)
    返回 (提取错误代码 (#写内存失败))
.如果真结束
hThread = CreateRemoteThread (pHandle, SECURITY, 0, lpbuf, 0, 0, 0)
WaitForSingleObject (hThread, -1)
VirtualFreeEx (pHandle, lpbuf, 5, 16384)
CloseHandle (hThread)
CloseHandle (pHandle)
DLL加注次数 = DLL加注次数 + 1
返回 (0)

QQ20241228-115229.png
FiigrxmX.rar (13.19 KB, 下载次数: 2)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-1-18 13:17 , Processed in 0.065395 second(s), 29 queries .

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表