无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: CodeHz

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

    [复制链接]
 楼主| 发表于 2020-11-10 11:08:27 | 显示全部楼层
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 系列的函数,这是符合微软推荐的方式,应该不会产生任何问题(
还能做一点小小的优化,把程序参数直接原样传递给目标程序
回复

使用道具 举报

发表于 2020-11-10 11:08:27 | 显示全部楼层
收藏了。谢谢楼主分享

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

使用道具 举报

发表于 2020-11-10 11:08:41 | 显示全部楼层
十分感谢分享

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

使用道具 举报

发表于 2020-11-10 13:32:22 | 显示全部楼层
不错的工具
回复

使用道具 举报

发表于 2020-11-10 13:58:47 | 显示全部楼层
真是好东西!感谢分享制作。原来我也是用vbs来实现,有了这个东东,又多了一个方法。
回复

使用道具 举报

发表于 2020-11-11 11:44:37 | 显示全部楼层
这个可以看看
回复

使用道具 举报

发表于 2020-11-11 13:33:43 | 显示全部楼层
收藏收藏收藏
回复

使用道具 举报

发表于 2020-11-11 14:11:33 | 显示全部楼层

这个可以看看
回复

使用道具 举报

发表于 2020-11-11 22:54:12 | 显示全部楼层
bug10 迫我改变
回复

使用道具 举报

发表于 2020-11-14 04:08:24 | 显示全部楼层
反应一个问题,
发现有些 EXE 运行时无法隐藏窗口.

Test.7z

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

点评

这个是预期行为,如果应用程序不按套路创建窗口(也就是不读取参数里的nCmdShow那个),就不会改变窗口显示模式,本质上它就是一个启动时提供给应用的建议,而不是强制的行为。。。 根据微软的文档: 所以其实只  详情 回复 发表于 2020-11-14 11:20
回复

使用道具 举报

 楼主| 发表于 2020-11-14 11:20:15 | 显示全部楼层
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

所以其实只能隐藏有标准行为的程序的首个窗口而已,而控制台程序弹出的窗口刚好符合这个条件
回复

使用道具 举报

发表于 2020-11-14 11:31:35 | 显示全部楼层

收藏收藏收藏
回复

使用道具 举报

发表于 2020-11-14 11:53:05 | 显示全部楼层
收藏
回复

使用道具 举报

发表于 2020-11-14 12:15:15 | 显示全部楼层
看看
回复

使用道具 举报

发表于 2020-11-15 08:48:05 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2020-11-15 08:57:04 | 显示全部楼层
好久没用过批处理,都是脚本。
回复

使用道具 举报

发表于 2020-11-15 12:19:36 | 显示全部楼层
不明所以,感觉很厉害的样子
回复

使用道具 举报

发表于 2020-11-15 14:52:45 | 显示全部楼层
不得不支持!
回复

使用道具 举报

发表于 2020-11-15 19:42:36 来自手机 | 显示全部楼层
东西虽小,功力老到
回复

使用道具 举报

发表于 2020-11-15 19:50:31 | 显示全部楼层
这应该是个好东东
回复

使用道具 举报

发表于 2020-11-16 01:50:40 | 显示全部楼层
本帖最后由 vaf 于 2020-11-16 02:02 编辑

试过, XP不能运行.

点评

须 6.0(Vista/2008 Srv) 以上.  详情 回复 发表于 2020-11-16 07:54
回复

使用道具 举报

发表于 2020-11-16 07:54:04 | 显示全部楼层
本帖最后由 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 就能跑.


点评

其实zig要求win8来着的,但是没用相关标准库就不会编译进去,我看看有没有办法绕过,毕竟如果指令集没问题的话,总是可以通过修改start.zig绕过一些初始化的代码解决的  详情 回复 发表于 2020-11-16 09:39
回复

使用道具 举报

发表于 2020-11-16 09:28:53 | 显示全部楼层
上周刚好在查这样的功能,果断收藏
回复

使用道具 举报

 楼主| 发表于 2020-11-16 09:39:06 来自手机 | 显示全部楼层
plusv 发表于 2020-11-16 07:54
须 6.0(Vista/2008 Srv) 以上,ZIG 语言要求蛮高的.

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

其实zig要求win8来着的,但是没用相关标准库就不会编译进去,我看看有没有办法绕过,毕竟如果指令集没问题的话,总是可以通过修改start.zig绕过一些初始化的代码解决的

点评

话说楼主的这个程序,是不是用你的tjs编译的?不懂zig,与C语言不兼容是吗?不能用vc编译吗?VC编译可以支持XP。另外,对于XP和WIN7以上能否自动适配,确保不出错,比如XP没有什么“管理员权限”之说。  详情 回复 发表于 2020-11-28 15:25
回复

使用道具 举报

发表于 2020-11-16 09:51:00 | 显示全部楼层
这个很好
回复

使用道具 举报

发表于 2020-11-16 09:55:56 | 显示全部楼层
回复

使用道具 举报

发表于 2020-11-16 10:00:56 | 显示全部楼层
这个有意思,进来看看。谢谢分享!
回复

使用道具 举报

发表于 2020-11-16 13:14:34 | 显示全部楼层
隐藏窗口执行命令行,这个可以有
回复

使用道具 举报

发表于 2020-11-16 13:55:05 | 显示全部楼层
支持了,感谢分享
回复

使用道具 举报

发表于 2020-11-16 14:14:23 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 21:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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