DOS下抓取128M的BIOS,已加密,给大家练手用

cxdzxc 2010-05-03 05:31:28
rem ;把下面这些存为一个BAT文件,在XP里运行即可生成一个128MBIOS.COM文件,重启机器进入纯DOS环境
rem ;没有纯DOS的,可以下载个一键GHOST硬盘版,安装后重启就有进入纯DOS的选项了
rem ;运行这个128MBIOS.COM文件,稍候数秒,即可在当前目录生成一个128MBIOS.BIN的BIOS镜像文件
rem ;可以抓取的BIOS最大为128M,估计10年后都够用了,如果实际的BIOS没有这么大
rem ;可以用WINHEX工具分割提取出实际的BIOS大小,CXDZXC(宁静的天空)于2010-4-26
rem ;另本文件使用了多重方式加密,如果你想解密,需要有一定的汇编基础^_^

del 128MBIOS.TXT

rem ;--------------------------------------------------------------

echo e 100 33 F6 B4 B8 8E C0 33 FF B5 04 F3 A5 06 68 11 01 >>./128MBIOS.TXT
echo e 110 CB 06 1E 07 1F B9 10 01 33 C0 BE 00 01 02 04 46 >>./128MBIOS.TXT
echo e 120 E2 FB 3C 00 0F 85 24 00 8C D8 80 E4 F0 80 FC B0 >>./128MBIOS.TXT
echo e 130 0F 85 18 00 BE 4C 01 BF 00 01 B9 00 10 32 DB AC >>./128MBIOS.TXT
echo e 140 FE C3 2A C3 AA E2 F8 06 68 00 01 CB FB E6 F1 BC >>./128MBIOS.TXT
echo e 150 06 2A D4 1D ED 9C 17 0E F3 A0 F3 74 B9 14 88 0E >>./128MBIOS.TXT
echo e 160 C5 E7 FD 7C FD 7E C3 1E 92 18 CF FF 07 82 AF EC >>./128MBIOS.TXT
echo e 170 B3 FE E1 C1 2A E3 2B 2C E1 6A FC 51 BC 0A BF FC >>./128MBIOS.TXT
echo e 180 9B F7 17 3C 67 A0 3C 42 F7 3F 6D 4F 42 58 FB 45 >>./128MBIOS.TXT
echo e 190 AB 55 67 08 55 4B B1 5B 6F 0E 08 58 51 E2 E1 35 >>./128MBIOS.TXT
echo e 1A0 79 54 BD 67 7B 1A C1 1A 5D 5E 5F 58 19 62 E3 F2 >>./128MBIOS.TXT
echo e 1B0 3D CA CE CE F4 70 D1 F5 71 D4 F2 36 75 F5 71 74 >>./128MBIOS.TXT
echo e 1C0 EA 65 30 77 78 34 7B 7C 31 BE 4C A1 3A 83 83 3E >>./128MBIOS.TXT
echo e 1D0 84 85 3B C8 56 AB F1 0F 8B 8E 04 65 45 D0 60 B5 >>./128MBIOS.TXT
echo e 1E0 4D 96 E3 65 BA C8 F7 CD CF D6 EC E2 EA F1 F6 D2 >>./128MBIOS.TXT
echo e 1F0 E7 EF F5 A8 A9 AA AB AC AD AE AF B0 B0 B1 B3 B4 >>./128MBIOS.TXT
echo e 200 B5 49 86 B8 C9 BA 63 BD BD BE 00 00 00 00 00 2D >>./128MBIOS.TXT

rem ;--------------------------------------------------------------

echo r cx >>./128MBIOS.TXT
echo 100 >>./128MBIOS.TXT
echo n 128MBIOS.COM >>./128MBIOS.TXT
echo w >>./128MBIOS.TXT
echo q >>./128MBIOS.TXT
debug < ./128MBIOS.TXT
rem pause
exit
...全文
730 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
dididu1515 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 ## 楼 Dididu1515的回复:]
后来又想学习UCDOS的汉字显示技术,它的程序用INT 3动态解码和加密,我
跟了一个多小时,还是INT 3程序嵌套,只好放弃。
[/Quote]
十年磨一剑,终于破了UCDOS的汉字显示核心程序KNL.COM的INT 3 嵌套动态解码和加密;
该程序共嵌套485次。只是这后面还有另法加密;革命尚未成功,同志仍需努力。
cxdzxc 2010-05-19
  • 打赏
  • 举报
回复
这是解密出来,最后的部分:

loc_4697: ; CODE XREF: seg000:4698j
int 3 ; Trap to Debugger
loop loc_4697
dec dx
pop si
mov word ptr ss:0Ch, 1D0h
nop
mov ss:0, bx
nop
mov word ptr ss:24h, 1B0h
nop
add si, 0A0h ; '?
in al, 21h ; Interrupt controller, 8259A.
cbw
nop
xor bx, ax
push si
mov ax, 0FFFFh
mov ds, ax
assume ds:nothing
mov si, 5
mov cx, 4

loc_46C8: ; CODE XREF: seg000:46CDj
lodsw
xchg ah, al
add bx, ax
loop loc_46C8
push cs
pop ds
assume ds:nothing
pop si
mov cx, ds:word_1FE
push cx
push si
add si, cx
add si, cx
push si
mov di, 100h
xchg si, di
mov cx, 100h
rep movsb
pop si
sub si, 100h
add ss:20h, si
add ss:24h, si
pop si
pop cx
mov di, 100h
mov dx, 9876h

loc_46FE: ; CODE XREF: seg000:4713j
lodsw
xor ax, bx
xchg ah, al
sub ax, bx
add bx, 3
nop
xor ax, dx
xchg ah, al
sub ax, dx
sub dx, 2
stosw
loop loc_46FE
push cs
pop ss
mov sp, 0FFFEh
mov si, 58h ; 'X'
mov di, 0
mov ax, 0
mov es, ax
mov cx, 28h ; '('
cld
cli
rep movsb
sti
push cs
pop es
mov ax, 100h
push ax
mov al, ds:0FEh
out 21h, al ; Interrupt controller, 8259A.
retn
; ---------------------------------------------------------------------------
这里开始,就是还未解密的用其他方法加密的数据块了
........................................
cxdzxc 2010-05-19
  • 打赏
  • 举报
回复
呵呵,怎么我俩弄出来的都一样啊,而且都是在同一天弄出来的啊,咳咳

PS:我没去计算它嵌套了多少次,但是很明显,我把使用INT 3动态解码的部分,全部都解密出来了,第一阶段解密的文件,已经发到你的邮箱里了,敬请查收,呵呵^_^
zoologist 2010-05-06
  • 打赏
  • 举报
回复
“真正的程序高手,一般也同时是解密高手”

这个点不敢苟同,解密和写程序完全是2码事情。
cxdzxc 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 budao3 的回复:]
......我没有学过解密,不会哇 呵呵
[/Quote]
不会解密的程序员不是好程序员,据我所之,真正的程序高手,一般也同时是解密高手
cxdzxc 2010-05-06
  • 打赏
  • 举报
回复
老刘---dididu1515真够厉害的啊,呵呵
dididu1515 2010-05-06
  • 打赏
  • 举报
回复
高手跳过: DOS下抓取128M的BIOS程序解密源码
http://blog.csdn.net/dididu1515/archive/2010/05/06/5561720.aspx
cxdzxc 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 lightseed 的回复:]
其实,天空,我在想,你为什么要加密。。。有啥意义呢?dump BIOS出来本来就是研究的,你反而又给加上密,不是有点太。。。(其实,你直接dump出来保存就可以啦,没必要整加密的。)只是我个人看法。
[/Quote]
是我抓BIOS的程序加密了,DUMP出来的BIOS并没有加密
lightseed 2010-05-06
  • 打赏
  • 举报
回复
其实,天空,我在想,你为什么要加密。。。有啥意义呢?dump BIOS出来本来就是研究的,你反而又给加上密,不是有点太。。。(其实,你直接dump出来保存就可以啦,没必要整加密的。)只是我个人看法。
Beyond_cn 2010-05-06
  • 打赏
  • 举报
回复
学习。。。
  • 打赏
  • 举报
回复
这种小段程序的解密完全没有难度,不需要一步步跟踪,你再怎么绕、切换保护模式都没有用,因为你绕不过去DOS的文件操作,只要在INT 21h服务例程的开头下断点,再反向追踪回去,几次之后,你自己解密好的代码就完全暴露出来了。
zoologist 2010-05-05
  • 打赏
  • 举报
回复
为什么抓那么大最主要是因为lz无法搞清楚当前机器上的Bios有多大,只好抓最高的128MB.
etracer 2010-05-05
  • 打赏
  • 举报
回复
很强!!,很强!!,接分!!帮顶!
cxdzxc 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 budao3 的回复:]
legacy BIOS就1M的大小,EFI BIOS最大也就4M,你弄保存那么大做什么?还有想保存BIOS的内容很简单,在DOS下把0xFFEFFFFF到0xFFFFFFFF内容保存下来就好了
[/Quote]

首先说,我对布道3兄弟一直都是很敬佩的,但是学术需要争论,只有争论才会发现不足,并让大家都进步,所以我将对布道3兄弟的说法提出我的一些见解了:

1:legacy BIOS就1M的大小,EFI BIOS最大也就4M,你弄保存那么大做什么?

PS1:我曾经在BIOS与简单内核探究群67286087做过2年的群主(前不久转让退群了),群里兄弟说有见过16M的BIOS,另看看硬盘和内存的发展史吧,谁也不能保证未来的BIOS不会接近甚至超过128M的,要知道我曾经有一个P2机器的BIOS才128Kbyte,之前的机器,BIOS甚至都不超过64Kbyte,那么现在的4M,或者1M的BIOS,比之以前又大了多少倍呢?做程序需要有远见,这是一个好程序员的基本素质!

2:还有想保存BIOS的内容很简单,在DOS下把0xFFEFFFFF到0xFFFFFFFF内容保存下来就好了

PS2:标准的DOS,不开A20,最大只能寻址1M,开A20(有4种方法,可以参见这里 http://biosos.5d6d.com/thread-33-1-1.html),也只能寻址到FFFF0H+FFFFH,就是1M+64K-16字节的样子,不使用一些办法(可以参见这里 http://biosos.5d6d.com/thread-12-1-1.html),是无法访问到4G高端的,更别说保存4G高端的BIOS数据了

PS3:另1M高端的BIOS映射和4G高端的真实BIOS是有所不同的,相信布道3兄弟是知道这个的
budao3 2010-05-05
  • 打赏
  • 举报
回复
......我没有学过解密,不会哇 呵呵
cxdzxc 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 budao3 的回复:]
想请问下你抓的地址是什么范围呢?
[/Quote]
你解密我的程序,不就啥都清楚了么?
budao3 2010-05-05
  • 打赏
  • 举报
回复
1.1M高端的BIOS映射和4G高端的真实BIOS是有不同的地方。
电脑一开始的开机,cpu是从4G-10h的地方抓取第一条指令来执行的,也就是BIOS ROm中代码来执行,在内存初始化好之后,会把BIOS ROM的内容拷贝到内存中来执行,这样做是为了加快执行的速度,因为从ROM中读数据实在是太慢了。但是如果要想得到整个BIOS ROM的内容,可以读4G高端的数据,那一定是完整的BIOS。
2.要想寻址4G空间,必须要把A20打开,不过打开也不是很难。
3.这边所说的BIOS大小其实是BIOS ROM的大小,BIOS 代码的真正大小其实小的多了,其中包括NVRAM,EC code等。

想请问下你抓的地址是什么范围呢?
  • 打赏
  • 举报
回复
不可能有128MB,我记得在PCI规范中32位地址空间的分配,从FEC00000开始才是BIOS、NVRAM等等,到顶也就20MB。突破这个大小要在64位地址空间中映射。
fdisksys 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 budao3 的回复:]
legacy BIOS就1M的大小,EFI BIOS最大也就4M,你弄保存那么大做什么?还有想保存BIOS的内容很简单,在DOS下把0xFFEFFFFF到0xFFFFFFFF内容保存下来就好了
[/Quote]
人家都说了解密游戏,懂不?
fdisksys 2010-05-04
  • 打赏
  • 举报
回复
看起来你还进入保护模式
加载更多回复(14)

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧