Board logo

标题: [特效代码] [原创]用纯bat生成exe文件的方法 [打印本页]

作者: plp626    时间: 2011-5-17 21:06     标题: [原创]用纯bat生成exe文件的方法

本帖最后由 plp626 于 2011-12-22 05:34 编辑

本贴仅供技术娱乐,切勿当真。。。
有技术爱好者,可交流此贴
http://bbs.bathome.net/thread-12265-1-1.html
  1. @echo off&setlocal EnableDelayedExpansion
  2. :: 不依赖debug,不依赖vbs ,bat基本独立自主的的生产方法
  3. pushd %tmp%||(pause&exit/b)
  4. call:getasc $ $1
  5. call:getdb s1
  6. >nul copy/b $1+$1 $2
  7. >nul copy/b $2+$1 $3
  8. >nul copy/b $3+$3+$1 $7
  9. if exist $~.tmp del $~.tmp
  10. Set s=
  11. for /l %%a in (0 2 1112)do (
  12.     if "!s1:~%%a,1!" neq "\" (
  13.         for %%b in (!s1:~%%a^,2!)do Set s=!s!!$:~0x%%b,1!
  14.     ) else (
  15.         set/p=!s!<nul>>$~.tmp
  16.         set/an=%%a+1&for %%b in (!n!)do (
  17.             copy/b $~.tmp+$!s1:~%%~b,1! $~.tmp >nul
  18.         )
  19.         set "s="
  20.     )
  21. )
  22. popd&chcp 936>nul
  23. move %tmp%\$~.tmp testfile.rar
  24. start testfile.rar
  25. pause
  26. goto:eof
  27. :getdb
  28. set %1=526172211A07\13BD07308\10D\7E9737480902C\1F101\306\202A3ABBEC6E24AB^
  29. 13E1D3507\120\3706C702E657865\1B0E070720819150D0CFD1C0DF577318E473B9BA1D90^
  30. 2798460EA431D1D72A1F50C1C2209253020A6BEED69205F8896F37DC1289092964203A65F0^
  31. 2592B84A1109440929744FE05D4E960C63A3A8743A187316A4BB937CDEA4B9FE20D90192B9^
  32. 82F2CDF62DF61EF1BABF9DF1B947C619B861F7D99EA3C6D1A6DFBE2F3EB0A88AE98478B970^
  33. C3E2871211BC3D70B4FC1F7A62FB773F992FA1A178F2ACBBC0E3ADAAE8D90AC369A6CA1A24^
  34. 076C340BDDB3BC7E4065BAE446952EEF870324EAC6682143A8E6C8B1A8E2A187D44D2C73FA^
  35. 8E04D2CFAE84F78217418B3275E2944D71E6F23D73945523B6CB17FBC2C773BE6EA894964A^
  36. 676F9ADEA18223D9DBDE946B8CA334430672874F2FF3F14FC8BB60F36AED7B37629ACFDF7A^
  37. F909EDFCCCFB7F784FE2CD2FC4D931EBFEBB1AD906C38D5ABBB134449C6A11A435C47E5BEC^
  38. 4293B5F8719139B75390EF1E37E0E0E2DCF35C8F79D388848485F45CBA4277AFAD6E4D6E04^
  39. 676E3D8EE652C094BDB594C6037202C1660F51AF620DFF02CB82B62D3D9212266D03436481^
  40. 2FF89872A66D401B55E4B7964349D6EF1A9744744655A44445A2166ADEE0E869F209FBE75A^
  41. 3E875FEA78FC41AF06C41B81FDFE6CBDA759D2A35D860F23960AF1C95BFDD6586E9F4A959B^
  42. 68BC8D31A4E4B228F71428371C50B69C24C81F6D91AFCAA3AACB412CAE517FFC0DC70A0C43^
  43. D7B\14007\1&goto:eof
  44. :getasc <$|#|@|_|\|/|?|{|}|[|]>
  45. chcp 936>nul
  46. set %1gbk=币市布弄清分标圈唉上下同名后小成民怒易笔耕化吗战则刚猛夜思舞鸟简闹出读导能图绿
  47. chcp 437>nul
  48. Set %1=&cmd /u/c echo !%1gbk!>%1gbk.tmp&set/p %1gbk=<%1gbk.tmp
  49. for /l %%a in (0,2,76)do Set %1=!%1!!%1gbk:~%%a,1!
  50. set %1= !%1:~,31! ^^!"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~!%1:~-8,1!亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬!%1:~-7!
  51. cmd /u/cecho.>%1gbk.tmp&findstr/vrc:$ %1gbk.tmp>%2
复制代码
getasc函数详解见:http://bbs.bathome.net/thread-12347-1-1.html
作者: CrLf    时间: 2011-5-17 21:26

本帖最后由 zm900612 于 2011-5-17 21:31 编辑

忽然发现不限制权限了...为了不错过这么重要的帖子,我险些向batcher申请用所有积分换权限...
这两天我也自己尝试做这个函数,但是障碍重重。现在既然有现成的,先收藏学习了。
这一项重要的技术革新,也不知道将来会引起多少波澜

呃,不过提示《文件“???”头被破坏》,debug看到大部分信息似乎确实成功还原了,难道有部分未能成功...
作者: caruko    时间: 2011-5-17 21:46

的确不错..
直接把文本转成2进制,加上EXE文件头。
作者: CrLf    时间: 2011-5-17 22:00

3# plp626


不知道呀,在xp虚拟机中测试,文件头没报错了,错误提示变成“不可预料的文件末端”...顺便咨询一下,那个noise.chs是干嘛用的呢?里面的内容好奇怪,中英文似乎一一对应,但中文又没有按顺序排,想不通能做什么
作者: batman    时间: 2011-5-17 22:02

测试成功并围观zm900612。。。
作者: CrLf    时间: 2011-5-17 22:05

本帖最后由 zm900612 于 2011-5-17 22:34 编辑
测试成功并围观zm900612。。。
batman 发表于 2011-5-17 22:02

画圈圈...
难道是我的电脑因为上了不该上的网站被污染了

刚刚在同学的机子上试了一下,正常运行,唯独我的电脑连虚拟机都表现不正常...用debug看了一下,原来无论虚拟机内还是虚拟机外,翻译后的文件缺了好多内容,成功翻译的内容到0330这一行为止:
13BD:0330  3D 7B 00 40 07 00 00 00-00 00 00 00 00 00 00 00   ={.@............

今年这台电脑就没正常过,原先是旧版sed用不了,重装后又问题多多...唉
不过总算见证了这个里程碑式的函数问世
作者: qzwqzw    时间: 2011-5-17 22:24

嗯,这仅是一个decoder
对应的应该还有一个coder吧
要不getdb的数据如何得来啊
有空发一个ascode编写的通用codec
作者: plp626    时间: 2011-5-17 23:08

8# qzwqzw


我正弄一个any2bat的 纯bat版,为了得到的数据体积小,又“解压”快速,想给大家弄一个短小而方便的函数,但越深入觉得水越深,设计到编码如何最佳体积存储。。感觉吃力。

这个文件体积较小,我先是用debug d100 size+256 将它的16进制文本信息提取,然后对连续00字符做重复标记处理

\对后面的一位做转义处理,/对后面的二位做转义处理,比如扫描到\A1C。。。就表示\A这里有0xa个0x00字符,扫描到/3C89。。表示/3C这里有0x3C个0x00字符。。。。
这是较简单压缩重复字符的方法

如果高压缩,那解压代码也就长了,这个压缩包文件体积小,简单处理了。
作者: CrLf    时间: 2011-5-17 23:15

让我想起cruko提及过的纯批处理正则引擎
作者: wankoilz    时间: 2011-5-17 23:38

本帖最后由 wankoilz 于 2011-5-17 23:41 编辑

原来两种斜杠是解压的标记呀,PF。看到楼主在另外一个贴讨论十六进制的压缩方法,原来是要用在这里,期待下一步更高效实用的压缩方式!
作者: techon    时间: 2011-5-19 13:07

请发源文件上来, 代码复制保存时提示含有Unicode字符
作者: awk    时间: 2011-12-23 00:05

回复 12# techon


我试了一下没问题,你用的什么浏览器?




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