Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Rezidentny program

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Rezidentny program

Autor: F

12:23:58 06.06.2008

Dalsi informace najdete v manualu k CPU - tam se vysvetluje co to SMM je, potom ve spcifikaci ACPI a taky v datasheetu k chipsetu.

SMI handler je v BIOSu, na stejne adrese jako video RAM. Ted zacina moda delat z nej rootkity (pred par lety jsem zjistil, ze diky ruznym bezpecnostnim zamkum lze udelat z principu neodstranitelny malware). Pouziva se napriklad na simulaci klavesnice - chipset zjisti ze nekdo cte z IO portu, prepne CPU do SMM, handler pak treba obslouzi USB klavesnici, nasazi data na IO port a jede se dal... Na google groups se dokonce Tajwanci chlubili jak pomoci SMM opravili bug v hardwaru :)

Pointa je v tom, ze W XP nakonfiguruji ACPI tak, aby udalosti co normalne zpusobuji SMI vyvolavaly SCI - bezny interrupt (ACPI!ACPIInterruptServiceRoutine).

Citovat příspěvek

 

Re: Rezidentny program

Autor: MazeGen

8:55:10 06.06.2008

F Napsal:
-------------------------------------------------------
> Vim ze je to off topic, ale DOS (na novem zeleze)
> na sber dat a ridici systemy nebrat! Jak tu casto
> pisu, DOS ani W98 nepodporuji ACPI - vse probiha
> pres SMI handler v System Management Modu (a je to
> spousteno mimo jine periodickym casovacem). Nikdy
> nevite, jak dlouho CPU v SMM zustane.

Šlo by to trochu víc rozepsat? Ten SMI handler je součástí BIOSu a reaguje na nějaké události?

Citovat příspěvek

 

Re: Rezidentny program

Autor: F

0:37:36 06.06.2008

Vim ze je to off topic, ale DOS (na novem zeleze) na sber dat a ridici systemy nebrat! Jak tu casto pisu, DOS ani W98 nepodporuji ACPI - vse probiha pres SMI handler v System Management Modu (a je to spousteno mimo jine periodickym casovacem). Nikdy nevite, jak dlouho CPU v SMM zustane.

Ve W XP staci nemaskovatelne preruseni a je to.

Citovat příspěvek

 

Re: Rezidentny program

Autor: V

14:15:15 05.06.2008

[ital]Sice nevím, na co dělat takové vykopávky, ale budiž:[/ital]

Sice nevím, zda je to tento případ, ale sám vím o spoustě případů, kdy to smysl má (např. jednoúčelové systémy pro sběr experimentálních dat, řídící systémy apod. - tam všude představuje použití jednoduchého OS typu MS-DOS větší bezpečnost a stabilitu, než komplikované zabugované systémy typu Windows)

Citovat příspěvek

 

Re: Rezidentny program

Autor: Miloslav Ponkrác

18:17:48 02.06.2008

Sice nevím, na co dělat takové vykopávky, ale budiž:

1) Segment tabulky přerušení nemusí být nula.

2) Nevím, zda je bezpečné volat funkce DOSu (int 21h) z obsluhy přerušení číslo 5. Dost bych o tom pochyboval.

3) Pokud to nezkoušíte pod čistým DOSem, ale třeba pod Windows, pak tabulku přerušení takto nezměníte - tam to funguje mnohem složitěji.

Miloslav Ponkrác

Citovat příspěvek

 

Rezidentny program

Autor: Anti

16:07:49 01.06.2008

Snazim sa napisat rezidentny program, ktory obsadi INT 5 (PrtScr) ale nefunguje to.. mam v tom trosku zmazok.. mohol by sa na to niekto prosim pozriet?

[code]
bits 16
org 0x0100

[SEGMENT .text]

; ---------------------
; | REZIDENTNA CAST |
; ---------------------

jmp START

NOVA_OBSLUHA:
push ax
push dx
push cx
mov ah, $2b
mov cx, 1999
mov dh, 1
mov dl, 1
int 21h ; zmenime cas
pop cx
pop dx
pop ax
jmp far [cs:int_x05_offset] ; a predame riadenie povodnej obsluhe
;END NOVA_OBSLUHA

; -----------------------
; | NEREZIDENTNA CAST |
; -----------------------

START:
call SETUP ; nastavime premenne a vektory
mov ah, 31h ; fcia 31h - stay resident
mov dx, START ; offset konca rezidentnej casti
shr dx, 4 ; delime 16 - rozdelime na paragrafy
inc dx ; pre istotu pripocitame jednotku
int 21h ; ukonci program a ostan rezidentny
;END START

SETUP:
cli
xor ax, ax
mov es, ax ; segment tabulky vektorov je 0
mov ax, [es:0x5*4] ;
mov word [int_x05_offset], ax ; offsetova adresa stareho perusenia
mov ax, [es:(0x5*4)+2] ;
mov word [int_x05_segment], ax ; segmentova adresa stareho prerusenia

mov ax, NOVA_OBSLUHA ; offsetova adresa novej obsluhy prerusenia
mov [es:int_x05_offset], ax ;
mov ax, cs ; segmentova adresa novej obsluhy prerusenia
mov [es:int_x05_segment], ax ;
sti
ret
;END SETUP

[SEGMENT .data]

int_x05_offset dw ''
int_x05_segment dw ''
[/code]

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: