Aproape tot ce ai vrut să știi despre Flash BIOS: Partea 1 - Arhiva WASM.RU
Încă o dată dat pe forum Offtopic „Ce este Flash?“, „Unde este BIOS-ul?“ Și așa mai departe. D. Nu am putut sta. Am decis să încerc să clarifice această problemă, precum și să se arate într-un mod nou. Din aceasta puteți extrage informații pentru a crea un cod rău intenționat, așa că sper că cei care doresc să fie un pic. In acest articol voi discuta următoarele întrebări:
- Ce este Flash, principiile și structura flash, cum să lucreze în mod programatic cu flash;
- FLAGS = 0002h și VM biți RF și extinderea acesteia sunt resetate;
- În CR0 biți registru sunt eliminate PG, TS, EM, MP și PE;
- CS = F000h;
- PEI = 0000FFFF0h;
- DS = ES = SS = FS = GS = 0000h;
- DX registru conține informații despre tipul de procesor.
Acum, un pic despre memorie cip flash. În primul rând punerea în aplicare de software depinde de producătorul chipset-ul. mulți cita doar principalele astfel data:
Winbond, Intel, Amtel, SST, Imt, Macronix, și altele. În acest sens, comenzile de programare cip sunt dependente de producător. În plus, face cip în plus față de cantitatea de memorie diferă, de asemenea, o modalitate de a stoca informații:
- sectorizată - Sectorul de memorie flash structura. De exemplu, cipul INTEL 28F001BX-T / 12V (128 kb) are patru sectoare: 1 principal 112 Kb, sector 2 la 4 Kb (PnP date) și dimensiunea bootblock de 8 Kb.
- Paginată - bufeuri de structura paginate. Toate cipuri de memorie sunt prezentate într-o singură pagină.
- VRAC-ERASE - cum să revendicați 2, doar pentru a fi suprascris este necesară pentru a trimite o comandă la pagina de pre-tratament.
- SECTOARE mici - structura de celule de memorie flash. seria EXEMPLUL SST 28x040 (5V / 3V / 2,7V) (512 Kb) are 1024 dimensiune de sector de 128 de octeți.
- Bulk-ERASE, NEVOILOR BLANKING - cum revendicării 3, este nevoie doar de echipa mai mult și obturare. De multe ori folosit în jetoane mai vechi.
Ei bine, așa cum am spus, pentru a ajunge la cipuri de memorie flash (adică software-ul) este necesar pentru a programa în mod corespunzător registrele de chipset-ul placii de baza. Și din nou, ca multi producatori de chipset-uri (de bază: Intel, VIA, SiS, AMD, nVidia) algoritmi software pentru a permite accesul la flash, la toate diferite. Și tocmai în acest domeniu nu există standarde comune, mă grăbesc să dezamăgesc virmeykerov începători și cei care doresc să protejeze programul de legare la semnătura din stânga în memoria flash. Codul necesar pentru a scrie dependente de dispozitiv (de exemplu, o placa de baza specifică și cip de memorie), și să încerce să se unească toate plăcile de bază existente și chips-uri flash au de a crea un birou, cum ar fi Premiul sau AMI și formați cu o duzină de programatori. Chiar și accesul clasic de program la Flash (sau AMIFlash AWDFLASH) nu funcționează pe toate plăcile de bază (în ciuda faptului că BIOS-ul lor fulgera «acasă»). Ei bine, este bine cunoscut faptul că pe cele mai multe placi de baza au acum un jumper care dezactivează hardware-ul pentru a lucra cu memorie flash. Un număr de producători au mers chiar mai departe. Ei folosesc tehnologia "Dual BIOS," (Gigabyte), chips-uri flash metode de protecție fără forme legale (VIA), și altele.
Este timpul pentru a aduce un pic de cod. Pentru a începe cu nu este propriu. J
mov byte ptr [eax], 60h; mov [0E5555h], 60h
; Confirmați echipa de ștergere (30h, 50H)
; mov byte ptr [0FFFE5555h], 0AAh
; mov byte ptr [0FFFE2AAAh]. 55h
; mov byte ptr [0FFFE5555h]. 80h; Ștergeți comanda sectorul
; mov byte ptr [0FFFE5555h], 0AAh
; mov byte ptr [0FFFE2AAAh]. 55h
; mov byte ptr [0FFFE5555h]. 50H; Confirmați comanda Ștergere
împinge ECx; împinge 0e2aaah