火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

2

主题

9

帖子

42

积分

新手上路

Rank: 1

积分
42
跳转到指定楼层
楼主
发表于 2024-4-23 20:36:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
精易模块中的【程序_内存中运行EXE
自己封装的时候被这结构体搞头疼了,实在翻不过来。
有没有大佬帮我翻成火山的,可有偿!


回复

使用道具 举报

42

主题

295

帖子

3177

积分

论坛元老

Rank: 8Rank: 8

积分
3177
沙发
发表于 2024-4-23 21:37:37 | 只看该作者
易语言代码转火山都非常简单,你可以当作一种学习,这么简单的翻译代码都不会,以后还怎么学火山,加油
回复

使用道具 举报

307

主题

1378

帖子

5301

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5301
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的心理及生理教育辅导。
回复

使用道具 举报

4

主题

78

帖子

807

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
807
地板
发表于 2024-4-24 10:58:18 | 只看该作者
本帖最后由 老道 于 2024-4-24 10:59 编辑
urenai 发表于 2024-4-23 22:23
未经测试的代码:

官方样例带的!杂类->内存加载模块->内存模块

回复

使用道具 举报

307

主题

1378

帖子

5301

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5301
QQ
5#
发表于 2024-4-24 11:10:51 | 只看该作者
官方的这个应该是在进程自身领空申请空间运行exe
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

13

主题

132

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
6#
发表于 2024-4-24 16:30:58 | 只看该作者
老道 发表于 2024-4-24 10:58
官方样例带的!杂类->内存加载模块->内存模块

你理解错了  精易这个是傀儡进程运行
回复

使用道具 举报

2

主题

9

帖子

42

积分

新手上路

Rank: 1

积分
42
7#
 楼主| 发表于 2024-4-24 19:18:26 | 只看该作者
urenai 发表于 2024-4-23 22:23
未经测试的代码:

不行啊不行啊不行啊不行啊
回复

使用道具 举报

307

主题

1378

帖子

5301

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5301
QQ
8#
发表于 2024-4-24 19:52:42 | 只看该作者
仙木同学 发表于 2024-4-24 19:18
不行啊不行啊不行啊不行啊

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

使用道具 举报

2

主题

9

帖子

42

积分

新手上路

Rank: 1

积分
42
9#
 楼主| 发表于 2024-4-24 20:00:21 | 只看该作者
  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[] = L"C:\\Users\\HZW\\Desktop\\32.exe";
  29.     //被注入的exe文件
  30.     TCHAR FilePath111[] = L"C:\\Windows\\System32\\notepad.exe";

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

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


  45.     // 创建新进程
  46.     PROCESS_INFORMATION pi;
  47.     STARTUPINFO si = { sizeof(STARTUPINFO) };
  48.     if (!CreateProcess(NULL, FilePath111, NULL, NULL, FALSE,
  49.         CREATE_SUSPENDED, NULL, NULL, &si, &pi)) {
  50.         std::cerr << "CreateProcess failed: " << GetLastError() << std::endl;
  51.         CloseHandle(hFile);
  52.         return -1;
  53.     }

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

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

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

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

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

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

  100.     return 0;
  101. }
复制代码
你看看,你试下
回复

使用道具 举报

307

主题

1378

帖子

5301

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5301
QQ
10#
发表于 2024-4-24 20:02:57 | 只看该作者
我没空
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 21:47 , Processed in 0.101936 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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