Windows 的 BAT 脚本有哪些方法可以转换为 exe 执行程序? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huage
V2EX    Windows

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

  •  
  •   huage 2023 年 10 月 6 日 5956 次点击
    这是一个创建于 899 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是打算购买一款软件。或者有教程能够自己编译生成的话也可以:

    bat2exe 类程序有好几个,哪个比较靠谱?主要是需要适用于 win10 和 win11
    第 1 条附言    2023 年 10 月 7 日
    补充一下需求:

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

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

    不想每次都硬编码的话,可以让它编译到 resource 里。
    liuliuliuliu
        2
    liuliuliuliu  
    PRO
       2023 年 10 月 7 日
    是的,C#写一个最简单了
    mmdsun
        3
    mmdsun  
       2023 年 10 月 7 日   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 月 7 日
    易语言
    ysc3839
        5
    ysc3839  
       2023 年 10 月 7 日 via Android   1
    市面上 bat2exe 似乎都是写到某个位置然后用系统的 cmd.exe 运行。要完全不释放文件的话,系统的 cmd.exe 没有提供这样的功能,所以不能实现。
    另外建议说说原始需求。
    Tumblr
        6
    Tumblr  
       2023 年 10 月 7 日 via iPhone
    @ysc3839 对脚本做封装的十有八九目的不纯。要是封装 ps1 还说得过去,毕竟 ps1 无法直接运行,封装 bat 就妥妥没借口了。
    vibbow
        7
    vibbow  
       2023 年 10 月 7 日
    winrar 打包一下?
    kokutou
        8
    kokutou  
       2023 年 10 月 7 日 via Android
    bat 封装还是可以看到源码的,转 exe 没意义。。。
    不如 winrar 自解压。
    Ehj8PSYA
        9
    Ehj8PSYA  
       2023 年 10 月 7 日
    Bat To Exe Converter v3.2.exe
    Golor
        10
    Golor  
       2023 年 10 月 7 日
    bat to exe converter ,用过这个,还挺不错的。
    iorilu
        11
    iorilu  
       2023 年 10 月 7 日
    啥意思, bat 也可以双击执行啊

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

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

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

    最正经的就是用编程语言重写,不要调用任何其他进程,但是太简单的照样会被反编译,只是你可以加个壳。
    kokutou
        27
    kokutou  
       2023 年 10 月 7 日 via Android
    @huage
    这种需求建议用 powershell 改写,然后随便找个 powershell 混淆工具。。。。
    benjaminliangcom
        28
    benjaminliangcom  
       2023 年 10 月 8 日
    即使你用 c 等调用 system 函数,依然可以用 process mobitor 拿到子进程的命令行,只有直接调用底层 api 才比较难解
    letmedie
        29
    letmedie  
       2023 年 10 月 8 日
    你这个要求就算是转成 exe 又如何,直接 nop 掉验证强行 jmp 到执行入口还不是能绕过验证码,如果价值够高,就算 vmp 壳也会被干掉的,二进制安全只不过现在讨论的地方比较少而已。
    letmedie
        30
    letmedie  
       2023 年 10 月 8 日
    如上面几位说的一样,用编程语言实现,然后加个强壳,只要不是价值过高,一般没人有兴趣去 crack 你的 exe 的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6059 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:29 PVG 11:29 LAX 20:29 JFK 23:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86