无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3306|回复: 5
打印 上一主题 下一主题

[分享] [简易脚本]带SRS的可输入式启动器[玩具]

[复制链接]
跳转到指定楼层
1#
发表于 2012-4-22 20:13:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不说了,上代码:
  1. !BAT
  2. debug off
  3. checkrange 20111001:-1 read 0x8278 || echo Err.version && exit 1
  4. cat (md)0x20001+1 | set string1=
  5. call :jump %string1%

  6. :jump
  7. checkrange 1 read 0x603FE && command %~p0/F6IMG %~p0/SRS || echo No SRS!
  8. goto :R%~x1

  9. :R.img
  10. :R.lzma
  11. :R.gz
  12. :R.ima
  13. debug 1
  14. checkrange 1 read 0x603FD || map %1 (fd0) || map --mem %1 (fd0)
  15. checkrange 0 read 0x603FD && set file=%1 && goto :hd
  16. if not exist (fd1)/TXTSETUP.SIF map --mem %~p0/WVBlock.IMG (fd1)
  17. map --hook
  18. chainloader (fd0)
  19. rootnoverify (fd0)
  20. boot

  21. :R.iso
  22. debug 1
  23. map %1 (0xFF) || map --mem %1 (0xFF)
  24. if not exist (fd1)/TXTSETUP.SIF map --mem %~p0/WVBlock.IMG (fd1)
  25. map --hook
  26. chainloader (0xFF)
  27. root (0xFF)
  28. boot

  29. :hd
  30. command %~p0/movehd
  31. map %file% (hd0) || map --mem %file% (hd0)
  32. if not exist (fd1)/TXTSETUP.SIF map --mem %~p0/WVBlock.IMG (fd1)
  33. map --hook
  34. chainloader (hd0)+1
  35. rootnoverify (hd0,0) || rootnoverify (hd0)
  36. boot
复制代码
(md)0x20001+1处为文件地址,不得超过512字节;0x603FE处为1表示加载SRS;0x603FD处为1指示是否为硬盘镜像
加载SRS需要文件目录里有F6IMG
实例:
http://115.com/file/bej1uwak#
简易实例.rar
调用ksrun
当然,只是玩具级别,请各位大大批评指正,谢谢!
补上movehd的代码,移植自zhaohj的代码,感谢!需和本程序在一起

  1. !BAT
  2. set /a hd=*0x475&0xff+0x7f
  3. ::   内存地址0x475的低2字节保存的是物理磁盘数,使用 "*0x475&0xff" 即可得到磁盘数,
  4. ::   将这个结果与0x7f相加后即为最后一块磁盘的驱动器号,并将这个值赋给变量 hd ,
  5. ::   以含有两块物理磁盘为例(hd0) (hd1),执行本行命令后变量 hd 值为129 (16进制的 0x81),
  6. ::   此时 hd0 为 128 (0x80) 号设备, hd1 为 129 (0x81) 号设备
  7. checkrange 0x7f calc %hd% && exit
  8. ::   若变量 hd 的值大于0x7f,说明存在物理磁盘,否则不存在物理磁盘,退出本脚本
  9. :move
  10. ::   标签名,方便循环处理
  11. set /A hd1=%hd%+1
  12. ::   将变量 hd 的值加一后赋给新变量 hd1,此时值为 0x82
  13. map (%hd%) (%hd1%)
  14. ::   将最后一块磁盘向后移,初始时 hd0 为 0x80号设备, hd1 为 0x81号设备,
  15. ::   此时 hd0 为 0x80 号设备, hd1 为 0x82 号设备
  16. set /A hd=%hd%-1
  17. ::   将变量 hd 的值减一后重新赋给变量 hd,准备处理下一块磁盘
  18. checkrange 0x7f calc %hd% || goto :move
  19. ::   判断是否已处理完最后一块磁盘,没有的话返回到 :move 标签继续后移磁盘,
  20. ::   本例中需执行两次后移磁盘操作,执行完毕后hd0为 0x81 号设备,hd1为 0x82 号设备,
  21. ::   并保留原hd0设备号 (0x80) 不变以便供全外置内核PE使用
  22. map --hook
  23. ::   使仿真生效
  24. exit
  25. ::   退出批处理脚本
复制代码

[ 本帖最后由 2011czmxbb52 于 2012-4-22 20:33 编辑 ]
2#
发表于 2012-4-23 09:56:47 | 只看该作者
这已不算是玩具了,已经初具模块的雏形。
希望LZ进一步制作出更加完美功能的工具,从而使G4D更加强大。
回复

使用道具 举报

3#
 楼主| 发表于 2012-4-23 12:01:54 | 只看该作者
第二版,加上普通链式引导的代码:
  1. !BAT
  2. debug off
  3. checkrange 20111001:-1 read 0x8278 || echo Err.version && exit 1
  4. checkrange 524:-1 calc *0x413 & 0xffff || map --int15nolow=1 && pause Warnning: less memory
  5. cat (md)0x20001+1 | set string1=
  6. call :jump %string1%

  7. :jump
  8. checkrange 1 read 0x603FE && command %~dp0/F6IMG %~dp0/SRS || echo No SRS!
  9. if /i "%~x1"=="" set file=%1 && call :chainload %file%
  10. goto :R%~x1

  11. :R.img
  12. :R.lzma
  13. :R.gz
  14. :R.ima
  15. debug 1
  16. checkrange 1 read 0x603FD || map %1 (fd0) || map --mem %1 (fd0)
  17. checkrange 0 read 0x603FD && set file=%1 && goto :hd
  18. if not exist (fd1)/TXTSETUP.SIF map --mem %~p0/WVBlock.IMG (fd1)
  19. map --hook
  20. chainloader (fd0)
  21. rootnoverify (fd0)
  22. boot

  23. :R.iso
  24. debug 1
  25. map %1 (0xFF) || map --mem %1 (0xFF)
  26. if not exist (fd1)/TXTSETUP.SIF map --mem %~ dp0/WVBlock.IMG (fd1)
  27. map --hook
  28. chainloader (0xFF)
  29. root (0xFF)
  30. boot

  31. :hd
  32. command %~dp0/movehd
  33. map %file% (hd0) || map --mem %file% (hd0)
  34. if not exist (fd1)/TXTSETUP.SIF map --mem %~dp0/WVBlock.IMG (fd1)
  35. map --hook
  36. chainloader (hd0)+1
  37. rootnoverify (hd0,0) || rootnoverify (hd0)
  38. boot

  39. :R.BIN
  40. :chainload
  41. checkrange 0x21 read 0x8280 || chainloader --force %1 ! chainloader --raw %1
  42. root %~d1
  43. boot
复制代码

[ 本帖最后由 2011czmxbb52 于 2012-4-23 12:18 编辑 ]
回复

使用道具 举报

4#
发表于 2012-4-23 14:10:33 | 只看该作者
慢慢的有点意思了,我想问一下,几时有成品出来???

还有,是否考虑直接使用NTBOOT加载?
回复

使用道具 举报

5#
 楼主| 发表于 2012-4-23 16:57:09 | 只看该作者
搞了一个单文件版,下载地址:
http://115.com/file/bejd4dce#
ksrun.zip
以后一个文件通用

用法:

  1. write (md)0x20001+1 ()/ISO/66369.ISO
  2. #这行指定文件路径
  3. write 0x603FE 1
  4. #这行指定加载SRS
  5. command ()/boot/grub/ksrun
  6. #运行程序
复制代码
回复

使用道具 举报

6#
发表于 2012-5-4 16:04:27 | 只看该作者

回复 #5 2011czmxbb52 的帖子

这个模块,有点小问题,我在测试中发现不能返回G4D运行环境中,而且选择SRS错误后,不能正常返回。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 19:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表