开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 400|回复: 5
收起左侧

[精币悬赏] 精易程序内存中运行,问题,EXE大小问题,求更改源码BUG

[复制链接]
结帖率:63% (5/8)
发表于 2024-6-14 18:15:44 | 显示全部楼层 |阅读模式   广西壮族自治区南宁市
50精币
精易程序内存中运行,问题,EXE大小问题
同样的的源码,通用的编译,不同的大小,为什么大的无法运行啊,已经提示运行成功了,但是不显示窗口,小的就没问题,这是有大小限制吗?大的,小的都没壳,大的只是加了图片资源,一样的代码。
上一天帖子说是壳指针BUG,求更改源码

  
子程序名返回值类型公开备 注
程序_内存中运行EXE逻辑型 可以直接运行资源中的程序,不必释放。成功返回真,失败返回假。
参数名类 型参考可空数组备 注
欲执行的程序字节集欲执行的程序,不支持某些加了壳的程序,请自行测试。
命令行文本型为程序提供的命令行参数,不需要请留空。
外壳程序路径文本型外壳程序的路径(如果用系统程序做外壳,如cmd.exe、svchost.exe,可以实现穿防火墙,呵呵),不支持某些程序,请自行测试;不在当前目录下要提供绝对路径;留空默认为cmd.exe,如果无法运行,请换用不同的程序尝试。
等待程序运行完毕逻辑型默认为假,即不等待。
窗口显示方式整数型1#隐藏窗口; 2#普通激活; 3#最小化激活; 4#最大化激活; 5#普通不激活; 6#最小化不激活。如果省略本参数,默认为“普通激活”方式。
运行信息精易_进程结构用来接收在内存中执行的exe的运行信息(进程、主线程的句柄和ID)。不需要可留空。
变量名类 型静态数组备 注
idhIMAGE_DOS_HEADER 
inhIMAGE_NT_HEADERS 
ishIMAGE_SECTION_HEADER 
siSTARTUPINFO 
contextCONTEXT86 
ImageBase整数型 
i整数型 
addr整数型 
lOffset整数型 
连续赋值 (0, 运行信息.进程标识符, 运行信息.进程句柄, 运行信息.线程标识符, 运行信息.线程句柄)
如果真 (欲执行的程序 = {  })
返回 ()
RtlMoveMemory_IMAGE_DOS_HEADER (idh, 欲执行的程序 [1], Len_idh (idh))
如果真 (idh.e_magic ≠ 23117)
返回 ()
RtlMoveMemory_IMAGE_NT_HEADERS (inh, 欲执行的程序 [idh.e_lfanew + 1], Len_inh (inh))
如果真 (inh.Signature ≠ 17744)
返回 ()
si.cb = 68  ' sizeof(STARTUPINFO)
如果真 (是否为空 (窗口显示方式) 窗口显示方式 ≠ 2 窗口显示方式 > 0 窗口显示方式 ≤ 6)
si.dwFlags = 1
si.wShowWindow = 多项选择 (窗口显示方式, 0, 5, 2, 3, 8, 7)
如果真 (CreateProcessA (0, 选择 (是否为空 (外壳程序路径), 取cmd路径 (), 外壳程序路径)选择 (是否为空 (命令行) 命令行 = “”, “”, “ ” + 命令行), 0, 0, 假, 4, 0, 0, si, 运行信息))
返回 ()
context.ContextFlags = 65538
如果真 (GetThreadContext (运行信息.线程句柄, context) = 0)
ClearProcess (运行信息)
返回 ()
ReadProcessMemory (运行信息.进程句柄, context.Ebx + 8, addr, 4, 0)
如果真 (addr = 0)
ClearProcess (运行信息)
返回 ()
如果真 (ZwUnmapViewOfSection (运行信息.进程句柄, addr) = 0)
ClearProcess (运行信息)
返回 ()
ImageBase = VirtualAllocEx (运行信息.进程句柄, inh.OptionalHeader.ImageBase, inh.OptionalHeader.SizeOfImage, 12288, 4)
如果真 (ImageBase = 0)
ImageBase = VirtualAllocEx (运行信息.进程句柄, 0, inh.OptionalHeader.SizeOfImage, 12288, 4)
如果真 (ImageBase = 0)
ClearProcess (运行信息)
返回 ()
WriteProcessMemory (运行信息.进程句柄, ImageBase, 欲执行的程序 [1], inh.OptionalHeader.SizeOfHeaders, 0)
lOffset = idh.e_lfanew + Len_inh (inh)
计次循环首 (inh.FileHeader.NumberOfSections, i)
RtlMoveMemory_IMAGE_SECTION_HEADER (ish, 欲执行的程序 [lOffset (i - 1) × 40 + 1], Len_ish (ish))
如果真 (ish.PointerToRawData + 1 > 字节集_取长度 (欲执行的程序))
ClearProcess (运行信息)
返回 ()
WriteProcessMemory (运行信息.进程句柄, ImageBase + ish.VirtualAddress, 欲执行的程序 [ish.PointerToRawData + 1], ish.SizeOfRawData, 0)
VirtualProtectEx (运行信息.进程句柄, ImageBase + ish.VirtualAddress, ish.VirtualSize, Protect (ish.characteristics), addr)
计次循环尾 ()
WriteProcessMemory_整数35 (运行信息.进程句柄, context.Ebx + 8, ImageBase, 4, 0)
context.Eax = ImageBase + inh.OptionalHeader.AddressOfEntryPoint
SetThreadContext (运行信息.线程句柄, context)
ResumeThread (运行信息.线程句柄)
如果真 (等待程序运行完毕)
WaitForSingleObject (运行信息.进程句柄, -1)
如果真 (是否为空 (运行信息))
CloseHandle (运行信息.线程句柄)
CloseHandle (运行信息.进程句柄)
返回 ()



结帖率:63% (5/8)

签到天数: 6 天

 楼主| 发表于 2024-6-14 18:24:00 | 显示全部楼层   广西壮族自治区南宁市
大的40M,小的几百K  ,貌似超过20M 就会出BUG
回复

使用道具 举报

结帖率:22% (2/9)

签到天数: 6 天

发表于 2024-6-14 19:53:12 | 显示全部楼层   浙江省嘉兴市
111111111111111
回复

使用道具 举报

结帖率:63% (5/8)

签到天数: 6 天

 楼主| 发表于 2024-6-14 19:54:54 | 显示全部楼层   广西壮族自治区南宁市

?????????????
回复

使用道具 举报

结帖率:63% (5/8)

签到天数: 6 天

 楼主| 发表于 2024-6-14 21:46:14 | 显示全部楼层   广西壮族自治区南宁市
有没有大大解决一下,求求了
回复

使用道具 举报

结帖率:95% (18/19)

签到天数: 13 天

发表于 2024-6-15 01:04:20 | 显示全部楼层   江苏省徐州市
等大佬解决,顺便看看原理是什么
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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