无忧启动论坛

标题: 仅有6KB的 ShellExecuteEx 实用程序,可用于绕过wow64,静默运行bat,UAC提权 [打印本页]

作者: CodeHz    时间: 2020-11-9 22:03
标题: 仅有6KB的 ShellExecuteEx 实用程序,可用于绕过wow64,静默运行bat,UAC提权
本帖最后由 CodeHz 于 2021-1-7 12:36 编辑


(大概兼容 winxp 以上,帮助用英文是因为用A系列函数中文会乱码,极限优化到导入表只有4个dll,甚至不依赖c库,非静态链接)
用法举例
特别注意,由于默认是隐藏窗口执行的,所以有可能出现打开后台程序但是没有可见窗口的情况
为什么不用 vbs : 专门开一个脚本跑 shellexecute 不觉得有点蛋疼吗,另外还有 wow64 的问题(
源码: https://gist.github.com/codehz/38972dec42cb8ce9e400fbbc2967183c
预编译镜像 (32位+64位)
32位 shellexecuteex32.exe (6 KB, 下载次数: 198)
64位 shellexecuteex.exe (6 KB, 下载次数: 258)




作者: nttwqz    时间: 2020-11-9 22:08
也就是说,批处理打开记事本也是不会出现窗口的?
作者: CodeHz    时间: 2020-11-9 22:09
nttwqz 发表于 2020-11-9 22:08
也就是说,批处理打开记事本也是不会出现窗口的?

不是的,只有第一个窗口不会出现,其他方法创建的新进程不受影响。。。
也要隐藏的话,你可以在批处理里继续使用shellexecuteex(
作者: xhan    时间: 2020-11-9 22:32
谢谢分享
作者: Allreal    时间: 2020-11-9 22:35
这个很厉害啊。
作者: plusv    时间: 2020-11-9 22:36
>大概兼容 winxp 以上,帮助用英文是因为用A系列函数中文会乱码

为何不用 W 系列函数 ?
作者: 一线天    时间: 2020-11-9 22:37
试试看
作者: dnine999    时间: 2020-11-9 23:34
#在这里快速回复#赞一个!
作者: pos246    时间: 2020-11-10 00:31

作者: tedrick    时间: 2020-11-10 00:33
感谢分享
作者: nishijiji1    时间: 2020-11-10 00:34
什么东西

作者: CodeHz    时间: 2020-11-10 00:47
plusv 发表于 2020-11-9 22:36
>大概兼容 winxp 以上,帮助用英文是因为用A系列函数中文会乱码

为何不用 W 系列函数 ?

(事实上主要的部分ShellExecute是使用W的,Message Box属于次要的,就不用这么折腾了(zig语言默认是utf8的字符串)
作者: wbs1997    时间: 2020-11-10 00:52
这个很厉害啊。

作者: plusv    时间: 2020-11-10 01:08
本帖最后由 plusv 于 2020-11-10 01:14 编辑
CodeHz 发表于 2020-11-10 00:47
(事实上主要的部分ShellExecute是使用W的,Message Box属于次要的,就不用这么折腾了(zig语言默认是utf8 ...

我简单试了汉化,
貌似没问题,




作者: mint_grass    时间: 2020-11-10 01:31
好早就想找此类程序了,之前是通过vbs脚本实现的
作者: 5238869    时间: 2020-11-10 03:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: godworld    时间: 2020-11-10 05:25
good program, thx
作者: 窄口牛    时间: 2020-11-10 06:43
差不多吧,隐藏窗口的第三方以前也有,不过这个功能又多。
作者: 浊辅音    时间: 2020-11-10 07:02
很好的一个软件,支持
作者: junyee    时间: 2020-11-10 07:36
这个语言很有意思呀,了解一下.
作者: mrzhonghb    时间: 2020-11-10 08:03
顶一个
作者: 韩小锐    时间: 2020-11-10 08:10
支持一下
作者: mengxiangdao    时间: 2020-11-10 08:32
大小合适
作者: zhoubin    时间: 2020-11-10 08:39
谢谢
作者: 20121010168    时间: 2020-11-10 08:47
谢谢分享

作者: studyggm    时间: 2020-11-10 08:59
感谢分享
作者: 进士小站    时间: 2020-11-10 09:52
后台无声无影运行程序
作者: 左岸麦田    时间: 2020-11-10 10:17
感谢分享
作者: pseudo    时间: 2020-11-10 10:27
谢谢分享,收藏备用                                                                                  。
作者: holley2008    时间: 2020-11-10 10:50
多谢分享原创,随便找个bat试试
作者: CodeHz    时间: 2020-11-10 11:08
plusv 发表于 2020-11-10 01:08
我简单试了汉化,
貌似没问题,

其实是这样的,这事说起来比较复杂,本质上还是设计约束下的被迫之举
zig设计里panic报告错误的时候只能携带一个utf-8的字符串,很多内置的机制都依赖于此(为了跨平台,用单一字符串编码是一种trade off)
然后我重写了崩溃报告方式(默认是打印到终端,然而窗口程序并没有终端),用A系列MessageBox就可以省下一个utf-16转换的代码了(大约0.5KB)
接着为了缩减导入表,就不再为了打印帮助信息而导入MessageBoxW函数(节约一个导入表)
你可以暴力修改字符串达成汉化,但是在我这肯定是乱码的,因为我开了系统级的utf-8支持,然后通常大家用的都是GB2312编码的中文字符串。(没错,一堆国产软件都是坏的,不过可以通过LocalEmulator解决)
反过来,我在源码里直接写中文的话,我这里是能正常显示,但是大多数人那边肯定也是乱码的。
因此,在软件核心功能部分,也就是调用系统ShellExecuteEx的部分,用的是 W 系列的函数,这是符合微软推荐的方式,应该不会产生任何问题(
还能做一点小小的优化,把程序参数直接原样传递给目标程序
作者: bintank    时间: 2020-11-10 11:08
收藏了。谢谢楼主分享

[原创]
仅有6KB的 ShellExecuteEx 实用程序,可用于绕过wow64,静默运行bat,UAC提权

作者: bintank    时间: 2020-11-10 11:08
十分感谢分享

[原创]
仅有6KB的 ShellExecuteEx 实用程序,可用于绕过wow64,静默运行bat,UAC提权

作者: ggmm888    时间: 2020-11-10 13:32
不错的工具
作者: 2013caituaner    时间: 2020-11-10 13:58
真是好东西!感谢分享制作。原来我也是用vbs来实现,有了这个东东,又多了一个方法。
作者: klz12    时间: 2020-11-11 11:44
这个可以看看

作者: chen39    时间: 2020-11-11 13:33
收藏收藏收藏

作者: qingdao33122    时间: 2020-11-11 14:11

这个可以看看
作者: being    时间: 2020-11-11 22:54
bug10 迫我改变
作者: plusv    时间: 2020-11-14 04:08
反应一个问题,
发现有些 EXE 运行时无法隐藏窗口.

Test.7z

336.09 KB, 下载次数: 19, 下载积分: 无忧币 -2


作者: CodeHz    时间: 2020-11-14 11:20
plusv 发表于 2020-11-14 04:08
反应一个问题,
发现有些 EXE 运行时无法隐藏窗口.

这个是预期行为,如果应用程序不按套路创建窗口(也就是不读取参数里的nCmdShow那个),就不会改变窗口显示模式,本质上它就是一个启动时提供给应用的建议,而不是强制的行为。。。
根据微软的文档:
the first time ShowWindow is called, the value should be the value obtained by the WinMain function in its nCmdShow parameter

所以其实只能隐藏有标准行为的程序的首个窗口而已,而控制台程序弹出的窗口刚好符合这个条件
作者: oym2016    时间: 2020-11-14 11:31

收藏收藏收藏
作者: jjbj66    时间: 2020-11-14 11:53
收藏
作者: 489432757    时间: 2020-11-14 12:15
看看
作者: maghreb    时间: 2020-11-15 08:48
感谢分享
作者: 零下5度    时间: 2020-11-15 08:57
好久没用过批处理,都是脚本。
作者: MR.L    时间: 2020-11-15 12:19
不明所以,感觉很厉害的样子
作者: chshrm    时间: 2020-11-15 14:52
不得不支持!

作者: 9001    时间: 2020-11-15 19:42
东西虽小,功力老到
作者: ko20010214    时间: 2020-11-15 19:50
这应该是个好东东
作者: vaf    时间: 2020-11-16 01:50
本帖最后由 vaf 于 2020-11-16 02:02 编辑

试过, XP不能运行.
作者: plusv    时间: 2020-11-16 07:54
本帖最后由 plusv 于 2020-11-16 08:05 编辑
vaf 发表于 2020-11-16 01:50
试过, XP不能运行.

须 6.0(Vista/2008 Srv) 以上,ZIG 语言要求蛮高的.

https://docs.microsoft.com/en-us ... api-shellexecuteexw
ShellExecuteEx 要求         
Minimum supported client        Windows XP [desktop apps only]
Minimum supported server        Windows 2000 Server [desktop apps only]

若用其它语言编译 Windows XP 就能跑.



作者: 双响炮    时间: 2020-11-16 09:28
上周刚好在查这样的功能,果断收藏
作者: CodeHz    时间: 2020-11-16 09:39
plusv 发表于 2020-11-16 07:54
须 6.0(Vista/2008 Srv) 以上,ZIG 语言要求蛮高的.

https://docs.microsoft.com/en-us ... api-shelle ...

其实zig要求win8来着的,但是没用相关标准库就不会编译进去,我看看有没有办法绕过,毕竟如果指令集没问题的话,总是可以通过修改start.zig绕过一些初始化的代码解决的
作者: 西门庆歌    时间: 2020-11-16 09:51
这个很好
作者: 277654366    时间: 2020-11-16 09:55

作者: 苏州本是    时间: 2020-11-16 10:00
这个有意思,进来看看。谢谢分享!
作者: hfxiang    时间: 2020-11-16 13:14
隐藏窗口执行命令行,这个可以有
作者: trianv    时间: 2020-11-16 13:55
支持了,感谢分享
作者: songsandao    时间: 2020-11-16 14:14
谢谢楼主分享
作者: freesoft00    时间: 2020-11-17 21:16
感谢分享
作者: chenall    时间: 2020-11-19 11:45
收藏备用
作者: 5377503    时间: 2020-11-19 12:19
谢谢分享~~~~~~~~~~~~
作者: a583091790    时间: 2020-11-19 17:33
感谢 正需要这样的工具 隐藏窗口

作者: felixatvan    时间: 2020-11-20 05:30
學學
作者: cccaaaa123    时间: 2020-11-20 13:30
这个可以试下
作者: ghjghjghj    时间: 2020-11-20 16:01
谢谢分享

作者: ipmsger    时间: 2020-11-20 20:12
呵呵,呵呵,呵呵
作者: zhdg    时间: 2020-11-22 15:51
有这么厉害的
作者: jxdeng2017    时间: 2020-11-24 08:52
好东西, 支持!
作者: lianmeng    时间: 2020-11-24 09:08
感谢分享
作者: cchessbd    时间: 2020-11-26 13:11
谢谢老大分享
作者: hydn    时间: 2020-11-26 13:24
谢谢分享

作者: yqi99    时间: 2020-11-27 19:51
谢谢分享,看下
作者: 2012mifan    时间: 2020-11-28 15:18
牛叉 大佬
作者: liuzhaoyzz    时间: 2020-11-28 15:25
CodeHz 发表于 2020-11-16 09:39
其实zig要求win8来着的,但是没用相关标准库就不会编译进去,我看看有没有办法绕过,毕竟如果指令集没问 ...

    话说楼主的这个程序,是不是用你的tjs编译的?不懂zig,与C语言不兼容是吗?不能用vc编译吗?VC编译可以支持XP。另外,对于XP和WIN7以上能否自动适配,确保不出错,比如XP没有什么“管理员权限”之说。
作者: dongjun    时间: 2020-11-29 01:12
没太明白干什么用的。
作者: yexingqi    时间: 2020-11-29 15:31
不错不错!!!!
作者: ityeah    时间: 2020-12-21 20:30
下载一个,多一个选择
作者: wang66    时间: 2020-12-21 20:40
好东西。。。。。。。。
作者: haook    时间: 2020-12-21 20:52

谢谢分享
作者: zts59    时间: 2021-1-7 10:40
这么小,试试

作者: 创新科技2015    时间: 2021-1-7 10:50
谢谢分享
作者: 创新科技2015    时间: 2021-1-7 10:50
谢谢分享
作者: sslch7768    时间: 2021-1-7 11:13
好东西,谢谢楼主分享
作者: 秋水长天369    时间: 2021-1-13 19:52
多谢分享原创
作者: lmj9401    时间: 2021-2-4 13:27
有什么用吗?
作者: free16    时间: 2021-4-13 21:41
超级给力的的工具,这样的工具我找了好几年了。
作者: wplin    时间: 2021-5-5 20:23
感謝大大提供分享
作者: 爱启动    时间: 2021-7-3 14:01
感谢分享
作者: 36D    时间: 2022-4-7 15:01
不觉明厉
作者: cclgoo    时间: 2022-4-8 18:51
本帖最后由 cclgoo 于 2022-4-8 19:06 编辑

自身的BAT和CMD窗口不隐藏有何意义?添加一个跟你这相互相承,一劳永逸
隐藏CMD窗口,提自ku588的PE

隐藏CMD窗口.rar

661 Bytes, 下载次数: 55, 下载积分: 无忧币 -2


作者: net775    时间: 2022-7-18 17:00
这样运行的前提是:运行BAT所在的目标主机上要先有这二个shellexcuteex程序?
作者: net775    时间: 2022-7-18 17:21
cclgoo 发表于 2022-4-8 18:51
自身的BAT和CMD窗口不隐藏有何意义?添加一个跟你这相互相承,一劳永逸
隐藏CMD窗口,提自ku588的PE

这话的本质就是,直接在批处理里生成临时文件最方便. 这样还要在本地放一个EXE?
作者: 创新科技2015    时间: 2022-7-18 18:47
很给力!
作者: llrrqq    时间: 2022-7-21 08:39
谢谢分享
作者: 创新科技2015    时间: 2023-7-10 22:35
        很给力!
作者: sulong    时间: 2023-7-15 08:42
厉害了去试试,支持楼主
作者: iaanqrm    时间: 2023-7-15 09:05

作者: 2011夹克油    时间: 2023-7-16 19:04
看着这么多英文码码就头晕!




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3