V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huage
V2EX  ›  Windows

Windows 的 BAT 脚本有哪些方法可以转换为 exe 执行程序?

  •  
  •   huage · 2023-10-06 23:57:32 +08:00 · 4259 次点击
    这是一个创建于 411 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是打算购买一款软件。或者有教程能够自己编译生成的话也可以:

    bat2exe 类程序有好几个,哪个比较靠谱?主要是需要适用于 win10 和 win11
    第 1 条附言  ·  2023-10-07 18:09:02 +08:00
    补充一下需求:

    bat 脚本的话,非常容易暴露,不能加密。

    需要在客户机器上执行 bat 脚本上的功能,所以想转换为 exe 文件,并且加入密码功能。听说 bat2exe 之类的文件,实际上也是会释放 bat 文件,用 everything 之类的软件可以搜索到。所以还需要要求不能够被轻松反编译或者暴露 bat 原始文件。
    30 条回复    2023-10-08 00:56:37 +08:00
    Mithril
        1
    Mithril  
       2023-10-07 00:05:43 +08:00
    最简单的,你就直接自己用 C++,Go ,C#等语言写个简单的命令行程序,然后在里面硬编码把脚本写成字符串,做个系统调用,用 cmd 执行那个字符串,或者用输入流塞进去执行就行了。

    不想每次都硬编码的话,可以让它编译到 resource 里。
    nikenidage1
        2
    nikenidage1  
       2023-10-07 00:10:48 +08:00
    是的,C#写一个最简单了
    mmdsun
        3
    mmdsun  
       2023-10-07 00:20:15 +08:00   ❤️ 6
    windows 自带一个简单的工具。按 Win 键+ R 打开运行,输入 iexpress 回车。

    或者任意一个 windows 的开发框架,winform 、wpf 。
    https://learn.microsoft.com/zh-cn/windows/apps/desktop/

    visual studio 编译完成之后就有 exe 了
    https://learn.microsoft.com/zh-cn/dotnet/desktop/winforms/get-started/create-app-visual-studio?view=netdesktop-7.0
    wafm
        4
    wafm  
       2023-10-07 01:46:10 +08:00
    易语言
    ysc3839
        5
    ysc3839  
       2023-10-07 03:09:56 +08:00 via Android   ❤️ 1
    市面上 bat2exe 似乎都是写到某个位置然后用系统的 cmd.exe 运行。要完全不释放文件的话,系统的 cmd.exe 没有提供这样的功能,所以不能实现。
    另外建议说说原始需求。
    Tumblr
        6
    Tumblr  
       2023-10-07 06:57:03 +08:00 via iPhone
    @ysc3839 对脚本做封装的十有八九目的不纯。要是封装 ps1 还说得过去,毕竟 ps1 无法直接运行,封装 bat 就妥妥没借口了。
    vibbow
        7
    vibbow  
       2023-10-07 07:58:00 +08:00
    winrar 打包一下?
    kokutou
        8
    kokutou  
       2023-10-07 08:02:41 +08:00 via Android
    bat 封装还是可以看到源码的,转 exe 没意义。。。
    不如 winrar 自解压。
    lzz2394677796
        9
    lzz2394677796  
       2023-10-07 09:16:24 +08:00
    Bat To Exe Converter v3.2.exe
    Golor
        10
    Golor  
       2023-10-07 09:17:02 +08:00
    bat to exe converter ,用过这个,还挺不错的。
    iorilu
        11
    iorilu  
       2023-10-07 09:20:32 +08:00
    啥意思, bat 也可以双击执行啊

    又没界面, 转成 exe 有什么用, 难道你那代码很特别还想隐藏吗
    pan020037
        12
    pan020037  
       2023-10-07 09:22:28 +08:00
    如果是自用的话, 转 exe 你还不如转服务
    proxytoworld
        13
    proxytoworld  
       2023-10-07 09:46:46 +08:00
    @iorilu 他想 drop 到别的地方呗,反正大概率不是啥好用处
    opengps
        14
    opengps  
       2023-10-07 10:15:51 +08:00
    命令作为文本,编译进 windows form 程序里
    CoronaZero
        15
    CoronaZero  
       2023-10-07 10:48:02 +08:00 via Android
    用压缩软件的自解压格式好像可以做到?好像可以设置解压后自动运行之类的。
    sakura6264
        16
    sakura6264  
       2023-10-07 12:19:07 +08:00
    c 语言 system 函数?
    shyangs
        17
    shyangs  
       2023-10-07 12:40:21 +08:00
    這可能是個「 X-Y 問題」。

    為什麼 要 .bat to .exe ? OP 的最原始需求/問題/情境是啥?
    c2const
        18
    c2const  
       2023-10-07 14:50:58 +08:00
    1.只需要简单打包,市面上很多,基本都是包装器,甚至自己花点时间写个也可以,chatGPT 也可以写;基本原理就是把 bat 脚本作为文件,释放到硬盘,然后调用执行,最后删除文件;
    2.C 系语言写个命令行程序,调用 cmd 或者创建 cmd 进程,再把 bat 的命令依次执行,好处是硬盘无文件,全在内存,坏处是 bat 脚本复杂可能不能直接照搬,得改改,兼容性不好;
    3.偏安全向的技术,自己解析 PE 文件格式,内存加载 cmd.exe 这个程序再执行,bat 文件内容也只在内存,实现参考 github 上的 Blackbone 库,早期灰黑产业用得多;
    c2const
        19
    c2const  
       2023-10-07 14:52:52 +08:00
    4.bat 脚本不复杂,还可以让 chatGPT 帮你用其它语言重写,再编译或 AOT 编译到 EXE 。
    winterbells
        20
    winterbells  
       2023-10-07 15:00:57 +08:00
    几年前收藏了一个 Bat_To_Exe_Converter
    zgcwkj
        21
    zgcwkj  
       2023-10-07 15:01:25 +08:00
    没记错的话,直接改后缀也是能正常打开的
    huage
        22
    huage  
    OP
       2023-10-07 18:15:53 +08:00
    @shyangs
    @iorilu
    @winterbells 就是不希望别人能够拿到这个文件去执行,转成 exe 后,需要输入正确的验证码才能执行。要求这个 exe 不能被反编译和释放出隐藏的 bat 文件。
    cnbatch
        23
    cnbatch  
       2023-10-07 19:47:24 +08:00
    如果 bat 内容不多,不如索性换语言改写,编译成 exe
    huage
        24
    huage  
    OP
       2023-10-07 21:14:28 +08:00
    @winterbells win10 、11 可以正常使用吗?
    redsun368573607
        25
    redsun368573607  
       2023-10-07 21:46:05 +08:00
    我还以为这个问题是二十年前问的
    yulon
        26
    yulon  
       2023-10-07 22:11:47 +08:00
    你用 bat ,怎么都要用 cmd.exe 吧,我直接 hook cmd.exe ,你什么加密都没用。

    就算你要把所有 bat 里的命令都编译成 native 代码,bat 的内容不外乎就是启动其他的 exe ,那我 hook 你创建进程,还是能知道你在干什么。

    最正经的就是用编程语言重写,不要调用任何其他进程,但是太简单的照样会被反编译,只是你可以加个壳。
    kokutou
        27
    kokutou  
       2023-10-07 23:50:10 +08:00 via Android
    @huage
    这种需求建议用 powershell 改写,然后随便找个 powershell 混淆工具。。。。
    benjaminliangcom
        28
    benjaminliangcom  
       2023-10-08 00:32:57 +08:00
    即使你用 c 等调用 system 函数,依然可以用 process mobitor 拿到子进程的命令行,只有直接调用底层 api 才比较难解
    letmedie
        29
    letmedie  
       2023-10-08 00:54:40 +08:00
    你这个要求就算是转成 exe 又如何,直接 nop 掉验证强行 jmp 到执行入口还不是能绕过验证码,如果价值够高,就算 vmp 壳也会被干掉的,二进制安全只不过现在讨论的地方比较少而已。
    letmedie
        30
    letmedie  
       2023-10-08 00:56:37 +08:00
    如上面几位说的一样,用编程语言实现,然后加个强壳,只要不是价值过高,一般没人有兴趣去 crack 你的 exe 的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:56 · PVG 21:56 · LAX 05:56 · JFK 08:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.