赛博仙人 发表于 2024-2-11 23:54:30

DMA遍历同名进程PID,大牛勿喷

如果对你有帮助,希望可以给个好评谢谢!
vmm项目中vmmdll.c添加以下代码

_Success_(return!=NULL)
LPSTR VMMDLL_Pid_List(_In_ VMM_HANDLE H, _In_ DWORD dwPid)
{
    VMMDLL_PROCESS_INFORMATION ProcessInformation;
    SIZE_T cbProcessInformation = sizeof(VMMDLL_PROCESS_INFORMATION);
    ZeroMemory(&ProcessInformation, sizeof(VMMDLL_PROCESS_INFORMATION));
    ProcessInformation.magic = VMMDLL_PROCESS_INFORMATION_MAGIC;
    ProcessInformation.wVersion = VMMDLL_PROCESS_INFORMATION_VERSION;
    BOOL pdwResult = VMMDLL_ProcessGetInformation(H, dwPid, &ProcessInformation, &cbProcessInformation);
    LPSTR AA = NULL;
    AA = ProcessInformation.szName;
    if (pdwResult = 0)
    {
      return "";
    }
    return AA;
}

易语言添加以下代码,VMM句柄可以找我上一个帖子中的DMA初始化()子程序
.版本 2

.子程序 DMA取同名进程PID, 逻辑型
.参数 进程名称, 文本型
.参数 dwPid, 整数型, 参考 数组
.局部变量 pPIDs, 字节集
.局部变量 进程数量, 长整数型
.局部变量 进程数组, 整数型, , "0"
.局部变量 i, 整数型
.局部变量 返回进程pid, 整数型
.局部变量 返回进程名称, 文本型

VMMDLL_PidList (VMM句柄, pPIDs, 进程数量)
pPIDs = 取空白字节集 (进程数量 × 4)
VMMDLL_PidList (VMM句柄, pPIDs, 进程数量)
重定义数组 (进程数组, 假, 进程数量)
.计次循环首 (进程数量, i)
    进程数组 = 到整数 (取字节集数据 (pPIDs, #整数型, (i - 1) × 4 + 1))
.计次循环尾 ()
.计次循环首 (进程数量, i)
    .如果真 (VMMDLL_Pid_List (VMM句柄, 进程数组 ) = 进程名称)
      加入成员 (dwPid, 进程数组 )
    .如果真结束

.计次循环尾 ()
返回 (取数组成员数 (dwPid) > 0)


.版本 2

.DLL命令 VMMDLL_PidList, 逻辑型, "vmm.dll", "@VMMDLL_PidList"
    .参数 hVMM, 整数型
    .参数 数据, 字节集, 传址
    .参数 pcPIDs, 长整数型, 传址
.版本 2

.DLL命令 VMMDLL_Pid_List, 文本型, "vmm.dll", "@VMMDLL_Pid_List"
    .参数 hVMM, 整数型
    .参数 dwPid, 整数型

赛博仙人 发表于 2024-9-6 22:34:18

q351336578 发表于 2024-6-16 13:25
老哥添加进去后,编译出来的dll,E调用显示无法找到指定DLL库中的命令,咋解决啊。

库名前加@,例如:@gdi32.dll

搁浅 发表于 2024-9-5 09:15:08

{:titter:}{:titter:}学纱胰腺癌{:shocked:}

q351336578 发表于 2024-6-16 13:25:49

老哥添加进去后,编译出来的dll,E调用显示无法找到指定DLL库中的命令,咋解决啊。

dennsiz1 发表于 2024-4-11 18:36:02

感谢无私奉献,比那些要海B骗子强多了

落雪无尘V 发表于 2024-4-11 17:22:17

感谢无私分享

695889900 发表于 2024-2-14 22:22:10

真好,来看看看
页: [1]
查看完整版本: DMA遍历同名进程PID,大牛勿喷