Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem DOS: unload driver

Ahoj lidičky,

komunikuju s jedním člověkem a dostali jsme se do fáze, že potřebuje v DOSu (MS DOS, ale mohl by být snad použit i FreeDOS) v jednu chvíli odstranit v paměti zavedenej ovladač, prostě cosi jako "unload" toho ovladače.

Vy staří harcovníci, neznáte něco takovýho?

Pavel

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Cha cháááá, to Ti můžu poradit aby jsi ten ovladač disassembloval programem sourcer (bacha je to z…
Máslo 04.09.2006 17:39
Máslo
Ten napad s DisAssemblerem je vyborny, ale mnohem jednodussi a casove nenarocne reseni je pouzit nek…
FReeZ 04.09.2006 17:53
FReeZ
A kto napravi vektory prerusenia na ktore sa to zavesilo, prip. dalsie veci ktore si ten ovladac uro…
MM.. 04.09.2006 19:09
MM..
Tak teďs ho urazil. Pracuje na speciální věci, ale bez jeho souhlasu o tom nebudu mluvit. Pavel
Pavel 04.09.2006 19:22
Pavel
Heh, namiesto urazania by mohol robit veci poriadne. Poznam taketo problemy, myslis ze za mnou s tak…
MM.. 04.09.2006 19:50
MM..
Ten němec o kterým mluví se pokouší přemluvit aby pracovalo něco jako: zavede ovladač usb, vytvoří r…
Pavel 04.09.2006 20:39
Pavel
Ano, vyvadza ptakoviny :-? To nemoze dat grub do MBR toho z coho bootuje ten DOS? Resp. radsej to an…
MM.. 04.09.2006 20:46
MM..
No já do toho zas tolik nevidím, abych ti mohl odpovědět. Myslím ale, že jde právě o PC bez podpory…
Pavel 04.09.2006 21:01
Pavel
Ak chce robit take nieco musi dokonale vediet co robi. Najvacsi problem vidim v tom ze ak sa zacne b…
MM.. 04.09.2006 21:12
MM..
No klobouk dolů, tohle mi přijde jako zatraceně dobrá rada. Zkusím to přetlumočit :-) Pavel
Pavel 04.09.2006 21:31
Pavel
No, je to dost komplikovana zalezitost... Ja sam neviem ako funguje ten grub4dos, treba najprv nastu… poslední
MM.. 04.09.2006 21:43
MM..

Cha cháááá,

to Ti můžu poradit aby jsi ten ovladač disassembloval programem sourcer (bacha je to z r. 1990 :-D), hodil na to voko, připrogramoval funkci unloadingu, znova zkompiloval ... jak jednoduché.

http://data1.edisk.cz/stahni/13464/SR.ZIP_80.7kB.ht ml

Já tím kdysi (never more!) disassembloval nějakej rezidenťák na překlad kódování češtiny při tisku a upravoval pro specifické použití, zdrojáček je nádhera, dokocne okomentovanej ;-)),něco jako:

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
  
sub_4		proc	near
		push	ds
		push	es
		push	bx
		mov	bx,dx
		mov	ax,es
		cmp	ax,word ptr cs:data_7+2	; (705D:0140=705Dh)
		jne	loc_15			; Jump if not equal
		mov	dx,es:data_1e		; (0100:013E=3154h)
		mov	ds,es:data_2e		; (0100:0140=2036h)
		mov	ax,2517h
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		clc				; Clear carry flag
		mov	word ptr es:data_3e,0FFFFh	; (0100:0195=2046h)
		jmp	short loc_16		; (029A)
loc_15:
		stc				; Set carry flag
		mov	bx,3F9h
loc_16:
		mov	dx,bx
		pop	bx
		pop	es
		pop	ds
		retn
sub_4		endp

No tak konec srandy, že.

Ten napad s DisAssemblerem je vyborny, ale mnohem jednodussi a casove nenarocne reseni je pouzit nekterou ze starsich verzi Volkov Commanderu, v nem spustit ten ovladac, ktery se nacte do pameti a pokud ho bude potreba unloadovat, staci ve Volkovu pouzit ALT+F5 a sipkama si vybrat z nabidky jmeno toho ovladace, pote uz pouze ENTER a mozna ze to jeste bude chtit potvrzeni (YES), tim se ovladac spolehlive unloaduje, protoze Volkov ve starsich verzich vsechna TSRka nacita pomoci vlastniho handleru a uklada si offset i velikost, cili v podstate se jedna o primitivni hookovani DOSovych funkci, ktere by nemelo byt prilis slozite naprogramovat.

Takze pokud se tu nekdo z vas jeste stale v roce 2006 zabyva systemovym programovanim, muzete nakouknout do AtHelpu, SysManu, TechHelpu, nebo neceho podobneho a vytvorit si vlastni rezident, ktery se povesi na preruseni 21h a bude kontrolovat zda se neco chce ukoncit a zustat rezidentni (keep).

Pokud ano, tak naalokujeme par KB konvencni pameti a rezidentu vratime jeji offset a mozna i rozsah (dle potreby), ten nas programek muze napr. po stisknuti ALT+U unloadovat vse, co se od jeho spusteni nacetlo, vycistit pametovou oblast i uvolnit.

Asi jedina slozitejsi vec by v tomto pripade byla prace s konvencni pameti v DOSu, kterou uz si osobne prilis nepamatuji, hodne stesti pri hratkach s DOSem, nebo Volkovem =)

A kto napravi vektory prerusenia na ktore sa to zavesilo, prip. dalsie veci ktore si ten ovladac urobil v HW? (napr. taky emm386 prepne CPU do protected modu a pomeni milion dalsich veci s tym suvisiace).
Vektory preruseni by si sice mohol volkov nikde ulozit, ale ak ten ovladac nieco pomenil v HW to uz volkov neuprace.
Inac je rozdiel ovladac (*.sys) a klasicky rezident (*.com/*.exe), *.sys ak sa nemylim nespustis z beziaceho systemu, da sa dat len do config.sys.

Odporucam pouzit ovladac ktory sa vie korektne unloadovat alebo povedat nemcovi nech sa konecne spamata zo standardnej nemeckej naivity/blbosti... :-) Naco mu je ten ovladac? Ak to je len nejaky USB stick alebo co neda sa mu na to pouzit USB legacy support BIOSu?

Heh, namiesto urazania by mohol robit veci poriadne. Poznam taketo problemy, myslis ze za mnou s takymito vecami nechodia? Clovek az niekedy zasne co za katastrofy su schopni lepit v DOSe, namiesto toho aby urobili nieco poriadne.

P.S. nenapisal si ani v com konkretne je problem. Malo zakladnej RAM? Ak ano tak nacital ten ovladac do high memory (ak sa da) pouzitim LH?
Vseobecne je najlepsie ak sa rezident odinstaluje a uprace po sebe sam, ako uz bolo pisane vyssie/nizsie znovuspustenim s prislusnym parametrom.

P.S.2. narazal som aj na toto

z USB zařízení se načte pár souborů

- BIOSy zvyknu mat uz dnes legacy support pre USB storage (Edit: t.j. USB floppy, USB HDD, USB stick, USB CDROM, USB citacka pamatovych kariet, by bohla ist v DOSe aj bez specialnych USB ovladacov, zavisi ale od toho co vsetko z toho podporuje BIOS), takze som chcel tym prispevkom hore naznacit nech sa namiesto urazania pozre aj do BIOSu ci tam nahodou nema legacy support na disabled :-)

Ten němec o kterým mluví se pokouší přemluvit aby pracovalo něco jako: zavede ovladač usb, vytvoří ramdisk, do ramdisku načte spouštěcí soubory operačního systému, spustí Grub (grub4dos), a pokouší se z toho ramdisku nabootovat. Ale zřejmě (pokud jsem ho dobře pochopil) "se tam něco hádá" a vypadá to, že by pomohlo "unloadovat" ten driver pro usb z paměti. Tak a teď to posuď, jestli vyvádí ptákoviny.

Pavel

Ano, vyvadza ptakoviny :-? To nemoze dat grub do MBR toho z coho bootuje ten DOS? Resp. radsej to ani nechcem vediet :))
a) BIOS nema legacy support? (nepotreboval by ten USB ovladac. P.S. support pre USB sticky a floppy a CDROM byva v BIOSoch uz roky).
b) vyskusal nacitat tie subory s niecim co nie je na USB - nebude potrebovat ovladac USB, vtedy mu to funguje? (problem je naozaj USB ovladac?) Ja tam vidim tak trochu problemov viac...

P.S. ten RAM-disk dufam vytvara tym grubom, a ten OS co chce bootovat potom z RAMdisku, by mal pouzivat LEN int13h funkcie na pristup k disku, inac nebude schopny vidiet ten RAMdisk...

No já do toho zas tolik nevidím, abych ti mohl odpovědět. Myslím ale, že jde právě o PC bez podpory zsb v BIOSu (opakuji: myslím). Detaily momentálně nevím, budu s ním komunikovat až později. S tím int13hex už jsem kdysi taky cosi zahlídl, to mi něco vzdáleně připomíná.

Pavel

Ak chce robit take nieco musi dokonale vediet co robi. Najvacsi problem vidim v tom ze ak sa zacne bootovat ten novy OS cez grub, tak prevezme kontrolu nad RAM, a rezidenty co boli v DOSe mozu byt novym OS premazane, ale vektory preruseni stale ukazuju na nich. ten grub sa nejako ochrani inac by nemohol fungovat samotny grub, ale rezidenty ktore bezali v DOSe asi budu robit problem (to chce nastudovat poriadne dokumentaciu k tomu grub4dos ze co a ako presne funguje, aby vedel co moze a co nemoze).
Je mozne ze problem je v int13h (alebo aj v inych sluzbach) na ktorych je zaveseny ten USB ovladac, akonahle sa bootuje novy system a ak nahodou premaze usek pamati kde bol ten USB ovladac tak ten vektor prerusenia ukazuje doprazdna. Ak je ten USB ovladac .exe/.com tak nech skusi utility co uz pisali vyssie/nizsie, mohli by obnovit povodne vektory preruseni (na take ake boli pred nacitanim USB ovladaca), co by malo stacit (predpokladam ze v tom DOSe nema ziadne ine rezidenty), a skusit to. Vektor prerusenia sa da zmenit v DOSe aj rucne cez debug.exe (vektory prerusenia v realnom mode CPU zacinaju na adrese 0:0, 4byty na vektor).

P.S. ale v prvom rade odporucam pozriet si BIOS, a potom USB ovladac ktory sa vie sam odstranit, ak nejaky najde, aby pri odstranovani nastavil registre USB controllera aby neposielal vkuse IRQ na ktore nikto nebude reagovat, az sa USB ovladac odstrani...

No, je to dost komplikovana zalezitost... Ja sam neviem ako funguje ten grub4dos, treba najprv nastudovat dokumentaciu ku grub4dos ze ako to presne funguje, co ostane po nabootovani noveho OS, apod...
Potom ako som uz pisal najlepsie by bolo skusit nacitat tie subory do ramdisku z niecoho co nie je na USB (z diskety alebo HDD apod.), bez USB ovladaca, aby sa zistilo ci je problem len ten USB ovladac, alebo ci je problem niekde inde (napr. v tom aky OS potom bootuje - ci ten OS pouziva int13h, alebo ci sa snazi liezt na HW sam - v tom pripade si "odpili pod sebou konar" = nebude vediet citat svoje vlastne subory z RAMdisku)...

Zpět do poradny Odpovědět na původní otázku Nahoru