火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 492|回复: 9
打印 上一主题 下一主题

[视窗] 易语言的这个命令谁能转成火山的

[复制链接]

309

主题

1390

帖子

5354

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5354
QQ
楼主
发表于 2024-4-23 22:23:52 | 显示全部楼层
未经测试的代码:

  1. #include <windows.h>
  2. #include <iostream>

  3. // 获取PE文件头
  4. PIMAGE_DOS_HEADER GetDosHeader(LPVOID lpBaseAddress) {
  5.     return reinterpret_cast<PIMAGE_DOS_HEADER>(lpBaseAddress);
  6. }

  7. // 获取NT头
  8. PIMAGE_NT_HEADERS GetNtHeaders(LPVOID lpBaseAddress) {
  9.     PIMAGE_DOS_HEADER pDosHeader = GetDosHeader(lpBaseAddress);
  10.     return reinterpret_cast<PIMAGE_NT_HEADERS>(
  11.         reinterpret_cast<BYTE*>(pDosHeader) + pDosHeader->e_lfanew);
  12. }

  13. // 执行远程进程入口点
  14. void ExecuteRemoteProcess(HANDLE hProcess, LPVOID remoteBaseAddress) {
  15.     PIMAGE_NT_HEADERS pNtHeaders = GetNtHeaders(remoteBaseAddress);
  16.     LPVOID entryPoint = (LPVOID)((DWORD_PTR)remoteBaseAddress + pNtHeaders->OptionalHeader.AddressOfEntryPoint);

  17.     HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
  18.         (LPTHREAD_START_ROUTINE)entryPoint, NULL, 0, NULL);
  19.     if (hThread == NULL) {
  20.         std::cerr << "CreateRemoteThread failed: " << GetLastError() << std::endl;
  21.         return;
  22.     }

  23.     WaitForSingleObject(hThread, INFINITE);
  24.     CloseHandle(hThread);
  25. }

  26. int main() {
  27.     // 要注入的exe文件路径
  28.     TCHAR szFilePath[] = _T("C:\\path\\to\\your\\app.exe");

  29.     // 打开exe文件
  30.     HANDLE hFile = CreateFile(szFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
  31.         FILE_ATTRIBUTE_NORMAL, NULL);
  32.     if (hFile == INVALID_HANDLE_VALUE) {
  33.         std::cerr << "CreateFile failed: " << GetLastError() << std::endl;
  34.         return -1;
  35.     }

  36.     // 获取exe文件大小
  37.     LARGE_INTEGER fileSize;
  38.     if (!GetFileSizeEx(hFile, &fileSize)) {
  39.         std::cerr << "GetFileSizeEx failed: " << GetLastError() << std::endl;
  40.         CloseHandle(hFile);
  41.         return -1;
  42.     }

  43.     // 创建新进程
  44.     PROCESS_INFORMATION pi;
  45.     STARTUPINFO si = { sizeof(STARTUPINFO) };
  46.     if (!CreateProcess(NULL, _T("C:\\Windows\\System32\\notepad.exe"), NULL, NULL, FALSE,
  47.         CREATE_SUSPENDED, NULL, NULL, &si, &pi)) {
  48.         std::cerr << "CreateProcess failed: " << GetLastError() << std::endl;
  49.         CloseHandle(hFile);
  50.         return -1;
  51.     }

  52.     // 映射exe文件到内存
  53.     HANDLE hMapFile = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
  54.     if (hMapFile == NULL) {
  55.         std::cerr << "CreateFileMapping failed: " << GetLastError() << std::endl;
  56.         TerminateProcess(pi.hProcess, -1);
  57.         CloseHandle(hFile);
  58.         return -1;
  59.     }

  60.     LPVOID pFileBase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
  61.     if (pFileBase == NULL) {
  62.         std::cerr << "MapViewOfFile failed: " << GetLastError() << std::endl;
  63.         CloseHandle(hMapFile);
  64.         TerminateProcess(pi.hProcess, -1);
  65.         CloseHandle(hFile);
  66.         return -1;
  67.     }

  68.     // 将exe文件内容写入新进程
  69.     LPVOID remoteBaseAddress = VirtualAllocEx(pi.hProcess, NULL, fileSize.LowPart, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  70.     if (remoteBaseAddress == NULL) {
  71.         std::cerr << "VirtualAllocEx failed: " << GetLastError() << std::endl;
  72.         UnmapViewOfFile(pFileBase);
  73.         CloseHandle(hMapFile);
  74.         TerminateProcess(pi.hProcess, -1);
  75.         CloseHandle(hFile);
  76.         return -1;
  77.     }

  78.     SIZE_T bytesWritten;
  79.     if (!WriteProcessMemory(pi.hProcess, remoteBaseAddress, pFileBase, fileSize.LowPart, &bytesWritten)) {
  80.         std::cerr << "WriteProcessMemory failed: " << GetLastError() << std::endl;
  81.         VirtualFreeEx(pi.hProcess, remoteBaseAddress, 0, MEM_RELEASE);
  82.         UnmapViewOfFile(pFileBase);
  83.         CloseHandle(hMapFile);
  84.         TerminateProcess(pi.hProcess, -1);
  85.         CloseHandle(hFile);
  86.         return -1;
  87.     }

  88.     // 执行注入的exe
  89.     ExecuteRemoteProcess(pi.hProcess, remoteBaseAddress);

  90.     // 清理
  91.     VirtualFreeEx(pi.hProcess, remoteBaseAddress, 0, MEM_RELEASE);
  92.     UnmapViewOfFile(pFileBase);
  93.     CloseHandle(hMapFile);
  94.     CloseHandle(hFile);
  95.     ResumeThread(pi.hThread);
  96.     CloseHandle(pi.hThread);
  97.     CloseHandle(pi.hProcess);

  98.     return 0;
  99. }
复制代码
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

309

主题

1390

帖子

5354

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5354
QQ
沙发
发表于 2024-4-24 11:10:51 | 显示全部楼层
官方的这个应该是在进程自身领空申请空间运行exe
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

309

主题

1390

帖子

5354

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5354
QQ
板凳
发表于 2024-4-24 19:52:42 | 显示全部楼层
仙木同学 发表于 2024-4-24 19:18
不行啊不行啊不行啊不行啊

你再试试没道理出错啊,错误提示什么
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

309

主题

1390

帖子

5354

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5354
QQ
地板
发表于 2024-4-24 20:02:57 | 显示全部楼层
我没空
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-25 01:58 , Processed in 0.089399 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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