Board logo

标题: [格式转换] 新写的bat2exe,加密输出EXE,运行时绝不释放临时文件 [打印本页]

作者: xinje    时间: 2010-5-13 16:50     标题: 新写的bat2exe,加密输出EXE,运行时绝不释放临时文件

将BAT编译成EXE。
刚刚解决变量赋值的问题。感谢“neorobin”和 ”寒夜孤星“的帮助!!

BUG可能很多,需要大家一起努力。找出BUG,我来修正。


桩文件15KB,也就是说生成的EXE是你的bat+15KB。可以说相当小了。
为大家服务才是硬道理!

链接: https://pan.baidu.com/s/1qcpAtI9rKd6oIOEA7OqHew 提取码: mz4m
作者: x9tiancmd    时间: 2010-5-13 19:43

哪个做了 小白鼠 的说下, 效果怎么样呀
作者: Batcher    时间: 2010-5-13 20:58

用什么语言写的?
作者: xinje    时间: 2010-5-13 22:06

用c6写的.....
作者: vsbat    时间: 2010-5-13 23:44

WIN 7 下 还有点问题 不能运行
作者: Spring    时间: 2010-5-14 00:03

显然楼主没有认真尝试过把所有代码写在一行是否能成功。 但依据我的经验,这个办法是行不通的,大概跟踪了一下,你是把所有的连成一行。

如下内容:
  1. @echo off
  2. title Spring
  3. set hosts=C:\WINDOWS\system32\drivers\etc\hosts
  4. echo HOSTS文件内容:
  5. echo %hosts%
  6. echo.
  7. setlocal enabledelayedexpansion
  8. set /a i=0
  9. for /f "delims=" %%a in (C:\WINDOWS\system32\drivers\etc\hosts) do (
  10.   set /a i+=1
  11.   set "str=%%a"
  12.   if !i! gtr 9 (
  13.     echo !i!  !str!
  14.   ) else (
  15.     echo !i!   !str!
  16.   )
  17. )
  18. pause>nul
复制代码
被处理后,生成的文件调用如下外部命令:
  1. cmd /v:on /c @echo off&&title Spring&&set hosts=C:\WINDOWS\system32\drivers\etc\hosts&&echo HOSTS文件内容:&&echo !hosts!&&echo.&&setlocal enabledelayedexpansion&&set /a i=0&&for /f "delims=" !!a in (C:\WINDOWS\system32\drivers\etc\hosts) do (&&  set /a i+=1&&  set "str=!!a"&&  if !i! gtr 9 (&&    echo !i!  !str!&&  ) else (&&    echo !i!   !str!&&  )&&)&&pause>nul
复制代码
这显然是不可行的,我之前也有过类似的尝试,不过失败了,放弃这条路吧。
作者: Batcher    时间: 2010-5-14 01:00     标题: 回复 6楼 的帖子

嗯,很久之前有人提出过这个想法。
局限性大,而且非常容易破解。
批处理还是开源的好。
作者: ZJHJ    时间: 2010-5-14 09:10

至今为止批处理加密还真是没有找到一个好办法,因为CMD执行的是原码。
作者: xinje    时间: 2010-5-14 14:22

其实加密只能是防一部分人。
所有计算机软件到汇编层就没什么秘密了。
--------------
的确现在大家提出的问题很现实。但是我认为还是有办法解决的。
我现在在看关于控制台管道方面的资料。希望可以通过管道输出正确的,带有换行符的批处理。关于for和if等需要多行的命令,我想这个就必须把程序内核改变了。从新写IF、for命令内核,看来任重而道远啊。
作者: defanive    时间: 2010-5-15 11:25

实际上,我正在做一个加密程序。。。
具体原理不能透露,不过按照现在的情况来看,破解有一定困难。。。
作者: xinje    时间: 2010-5-15 11:35

原帖由 defanive 于 2010-5-15 11:25 发表
实际上,我正在做一个加密程序。。。
具体原理不能透露,不过按照现在的情况来看,破解有一定困难。。。

支持你!如果需要,我也可以帮忙
作者: Seter    时间: 2010-5-16 11:29

DEF probably wants to use the console made by himself....And so he does....
作者: fableleo    时间: 2010-5-19 14:28

我的操作系统是win7 不能运行
作者: wanfcl83    时间: 2010-5-23 02:55

win7操作系统 为什么运行不了
作者: taiji    时间: 2010-6-28 09:46

批处理加密,感觉没什么必要
稍微防防小菜就行了
别人真想破解,就是真的EXE也挡不住
曾经我也想过,能不能让内核直接从内存中运行批处理代码
后来也懒得搞了
作者: awful    时间: 2010-7-12 17:12     标题: 不能编译如下P处理

@echo off
if %1%==? goto help
if %1%==-c goto cs
if %1%==-e exit
if %1%==-s goto sc
if %1%==-w start www.bathome.net
if %1%==-f goto file
:help
echo 说明
echo D [参数]
echo ? 帮助
echo -c 读取计算机注册信息
echo -s 设置为CMD链接程序
echo -w 访问批处理之家
echo -f 查看文件信息 [Filename]
echo -e 退出
pause
start cmd.exe
exit
:cs
cls
for /f "tokens=1,2,3" %%i in ('ver') do set "a=%%i %%j %%k"
for /f "tokens=1" %%i in ('ver') do set "b=%%i "
for /f "tokens=2,3" %%i in ('ver') do set "c=%%i %%j"
for /f "delims=[ tokens=2" %%i in ('ver') do set "d1=%%i"
for /f "delims=_ tokens=1,2" %%i in ("%os%") do set "e=%%i %%j"
set "d=%d1:~2,9%"
echo 当前用户              %USERNAME%
echo ----------------------------------------------
echo 计算机名            %computername%
echo ----------------------------------------------
echo 操作系统名称          %OS%
echo ----------------------------------------------
echo 处理器的版本号        %PROCESSOR_REVISION%
echo ----------------------------------------------
echo 处理器的芯片体系结构  %PROCESSOR_ARCHITECTURE%
echo ----------------------------------------------
echo 命令处理程序扩展版本  %CMDEXTVERSION%
echo ----------------------------------------------
echo 当前所使用的操作系统  %a%
echo ----------------------------------------------
echo 制造公司: %b%
echo ----------------------------------------------
echo 名称: %c%
echo ----------------------------------------------
echo 版本:%d%
echo ----------------------------------------------
echo 系统所在分区: %Systemdrive%\
echo ----------------------------------------------
echo 系统所在目录: %SystemRoot%\
echo ----------------------------------------------
echo 内核: %e%
echo ----------------------------------------------



pause>nul
start cmd
exit
:sc
copy d.bat %SystemRoot%\system32\d.bat
echo OK
pause>nul
start cmd
exit
:file
echo 文件名为:%~n2
echo 文件扩展名为:%~x2
echo 文件全名为:%~nx2
echo 文件路径为:%~f2
echo 文件修改时间为: %~t2
echo 文件所在盘符为: %~d2
echo 文件目录为:%~dp2
echo 文件属性为: %~a2
echo 文件大小为:%~z2字节
pause
start cmd
exit
作者: fs822    时间: 2010-7-17 12:35

我记得映像路径有长度限制的吧?好像是512还是1024?用这个原理,长的批处理有可能会出问题
作者: zcydez    时间: 2010-7-17 15:54


作者: zcydez    时间: 2010-7-17 15:55


在下了一次
可以用了
作者: canyuexiaolang    时间: 2010-7-17 18:56

怎么最近都搞加密啊。。

干脆用一个set定义所有字符

然后 变量截取算了  或者VBS全部换成ASCII码...我刚刚写了个C++的转换ASCII码的软件

就是打了点(534KB啊啊啊啊啊)

问问,,是不是C++写出来的程序都那么大啊
作者: defanive    时间: 2010-7-17 20:09     标题: 回复 21楼 的帖子

完全错误。。。
压缩得好,都可以在10KB以内,除非你有额外数据。。。

PS:加密嘛,看起来我的还没被破呢,其他的破起来还是简单了
作者: weitvr2004    时间: 2010-12-14 20:42

楼主,,我想要一个和你功能完全相反的东西,,

不是针对你,是真的需要,
求………………
作者: user_    时间: 2011-6-16 20:06

真正的加密是放弃批处理。。。
学习其他高级语言,不过我是学的C。。。
(想问问,老毛桃PE中的EXE为什么不会生成临时文件???跟BAT2EXE的版本有关?)
作者: garyng    时间: 2011-10-11 16:17

完全不可以运行~
作者: c690984119    时间: 2011-11-4 19:37

支持你!如果需要,我也可以帮忙
作者: caruko    时间: 2011-11-11 17:25

批处理必须原码运行,所以真正的加密除非重写CMD

即使加密,在内存中的某个位置还是有原码存在。
作者: northwester    时间: 2011-11-23 12:02

试试看,不知道效果如何!
作者: applba    时间: 2012-1-24 02:18

回复 27# caruko

可以加入大量干扰代码,增大字数1000被,hoho~
作者: ringlys0    时间: 2012-8-3 23:59

支持一下。
作者: ringlys0    时间: 2012-8-4 00:05

试了下,编译不成功啊。
作者: ht河豚    时间: 2012-8-5 17:33

支持下,不过可以读内存获取源码
作者: 5209520    时间: 2019-5-13 13:52

真的吗?
看看一下




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2