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

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

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

    bat2exe 类程序有好几个,哪个比较靠谱?主要是需要适用于 win10 和 win11
    第 1 条附言  ·  139 天前
    补充一下需求:

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

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

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

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

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

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

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