首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个程序不能在DOS模式下运行

这个程序不能在DOS模式下运行
EN

Security用户
提问于 2016-08-15 18:10:05
回答 2查看 46.1K关注 0票数 9

我在Windows机顶盒上做了一个五级程序,并且已经实现了一个低权限的shell。因此,我正试图提升我的特权。然而,我尝试运行的每一个.exe都给了我“这个程序不能在DOS模式下运行”。在这样的环境中,是否有任何类型的配置需要更改,或者是否有不同的权限提升策略?“

EN

回答 2

Security用户

回答已采纳

发布于 2016-08-15 23:55:33

背景

该消息来自每个Windows (PE格式)可执行文件所具有的基本标头。消息(以及显示消息的代码)在技术上是可编辑的,但所有编译器似乎只是发出代码,显示相同的字符串,然后退出。它是16位可执行代码(如DOS .COM文件),用于在Windows或类似的Windows前系统上运行程序时显示。Windows的程序加载程序通常跳过它。

解释

然而,有一种情况是,Windows可能会显示这条消息:当您尝试运行比您使用的版本更高级的Windows版本编译的PE时,尤其是在主程序代码用于操作系统所能支持的不同CPU体系结构时。(例如,这类似于在16位DOS上运行Win32代码。)从GUI中,您将得到一个弹出错误,但在命令行中,您很可能只收到该消息。

这里最明显的选择是,您试图在(可怕的过时的) Windows上运行代码,并且您说您使用的是“i 686-W64-mingw32-GCC”。如果您正在为Windows编译64位二进制文件,那么它们极有可能无法工作;虽然在技术上存在64位版本的XP (它实际上是一个不同的内核版本,5.2 vs.5.1,但它被称为XP),但它从未被广泛使用;绝大多数XP机箱只有32位。如果您希望从命令行快速检查32位和64位,请检查是否存在\Windows\SysWOW64目录(该目录在64位计算机上保存32位系统二进制文件);如果它不存在,则在32位操作系统上运行。

Recommendation

  • 除非你A)需要64位的东西,而且B)知道你的目标是64位,只使用32位的有效载荷。
  • 确保您的代码和编译器是针对XP的(Vista之后添加了大量新API,这些API将阻止使用XP的程序在XP上运行)。
  • 考虑旋转一个XP VM,在目标计算机上测试有效负载是否在本地运行。
票数 11
EN

Security用户

发布于 2018-02-05 11:40:19

确保您正确地传递了有效负载,我在通过ftp传输accesschk.exe时遇到了类似的问题。FTP允许在ascii和二进制模式下进行传输,如果您以二进制模式传输它应该可以工作。

二进制模式一点一点地传输文件,因为它们位于FTP服务器上。然而,Ascii模式将直接下载文本。您可以键入ascii或二进制以在这些类型之间切换。

要做到这一点,请连接到ftp服务并键入“二进制”,您应该得到一个响应,上面写着"200 type set To I“

再次放入文件并运行可执行文件。

票数 12
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/133946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档