4. Gdzie tkwi bêÑd w aplikacjach i jak CRTBUG go naprawia,
5. Co znaczÑ komunikaty CRTBUGa,
6. Kontakt
1. Wprowadzenie
PierwszÑ wersj⌐ CRTBUGa napisaêem w marcu 1999r. Stworzyêem ten program, poniewa╛ przestaêy dziaêaå aplikacje napisane w Pascalu. Mam tego u siebie caêkiem sporo, a ╛al mi byêo kasowaå tak wielu programów zwêaszcza, ╛e trudno dziÿ znale½å ich funkcjonujÑce odpowiedniki w Windows. Dzi⌐ki CRTBUGowi "weterani DOSa" mogÑ pokazaå co potrafiÑ tak╛e i na szybszych maszynach.
2. Do czego sêu╛y CRTBUG
Najproÿciej mówiÑc - tak modyfikuje treÿå programu, ╛e nie zgêasza on wi⌐cej komunikatu: RunTime error 200 (dzielenie przez 0)
Raz naprawiony program nie wymaga ju╛ ╛adnych dalszych zabiegów, mo╛na go u╛ywaå bez przeszkód nawet na jeszcze szybszych komputerach.
3. Jak go u╛ywaå
Skêadnia programu wyÿwietlana jest za ka╛dym razem, kiedy zostanie on
uruchomiony bez parametrów. Aby zaprzÑtnÑå program do pracy wystarczy napisaå:
CRTBUG.EXE program1.exe program2.exe
gdzie:
program1.exe - to aplikacja zgêaszajÑca wspomniany wczeÿniej bêÑd
program2.exe - to naprawiona wersja program1.exe
Je╛eli naprawiasz program PO RAZ PIERWSZY to NIE poprawiaj procedury Delay. Program zanim rozpocznie przeróbki zapyta Ci⌐ o to. Opcji tej u╛ywaj WY¥ñCZNIE do programów naprawionych wczeÿniejszÑ wersjÑ CRTBUGa.
Pó½niej najlepiej zamieniå nazwy programów, gdy╛ niektóre mogÑ poszukiwaå wewn⌐trznych nakêadek, lub doczytywaå dodatkowe dane.
Pami⌐taj jednak, by zawsze zostawiå kopi⌐ programu, na wypadek gdyby naprawa nie przebiegêa pomyÿlnie.
4. Gdzie tkwi bêÑd w aplikacjach i jak CRTBUG go naprawia
Jak sama nazwa wskazuje bêÑd tkwi w module CRT. Pozostaje jedynie
odszukaå bê⌐dny fragment i wstawiå na jego miejsce to co trzeba.
PoczÑtkowo wszyscy obwiniali sam kod procedury Delay, a konkretnie Delayloop, który liczyê ile ma trwaå opó½nienie. W tym te╛ miejscu poprzednia wersja CRTBUGa dokonywaêa modyfikacji. Program dziaêaê, ale nie byêo ╛adnych opó½nieΣ - jednym sêowem procedura Delay nie speêniaêa swojego zadania.
Po kilku godzinach poszukiwaΣ i sprawdzania ró╛nych rozwiÑzaΣ metodÑ prób i bê⌐dów doszedêem, ╛e nale╛y zajÑå si⌐ samÑ procedurÑ Initialize.
To tutaj znajdowaêo si⌐ feralne dzielenie. Na szcz⌐ÿcie z rozkazu dzielenia mo╛na byêo zrezygnowaå, trzeba byêo jeszcze zmieniå nieco treÿå procedury:
NOT AX
NOT DX
MOV CX,0037
DIV CX
Na:
NOT AX
NOT DX
MOV CX,55
JB @@3
MOV AX,65536
@@3: MOV DelayCnt.Ax
Mniej wi⌐cej takich zmian dokonuje nowy CRTBUG. Po tych modyfikacjach Delay znowu zacznie opó½niaå dziaêanie programu tak jak trzeba.
5. Co znaczÑ komunikaty CRTBUGa:
"Podany program nie jest aplikacjÑ BP7" - CRTBUG naprawia WY¥ñCZNIE programy napisane pod Pascalem.
"Zbyt maêo cech podobieΣstwa (n) dla: x." - Pojawia si⌐ je╛eli program natrafi na bardzo zbli╛ony do matrycy fragment kodu, jednak iloÿå cech podobieΣstwa jest zbyt maêa. Zabezpieczenie to zapobiega modyfikacjom przypadkowych fragmentów kodu.
"Poprawianie kodu "Delay" Adres [B]: x." - Pojawi si⌐ je╛eli na wst⌐pie u╛ytkownik zezwoliê na poprawienie tego co zmieniêa poprzednia wersja CRTBUGa.
"Poprawianie kodu "Initialize" Adres [Bp]: x." - To jest najwa╛niejszy komunikat. Oznacza on prawidêowe poprawienie kodu aplikacji. Powinien pojawiå si⌐ jeden raz.
"Nieobsêugiwany typ pliku. Obsêugiwany typ to EXE." - Pojawi si⌐ je╛eli u╛ytkownik b⌐dzie próbowaê naprawiå inny typ pliku ni╛ EXE.
"BêÑd relokacji danych. Zbyt maêo podobieΣstw: n/t/52." - Jego pojawienie si⌐ jest bardzo rzadkie (jeszcze si⌐ nie spotkaêem) i oznacza, ╛e program nie mo╛e byå poprawiony, gdy╛ pod dokonaniu poprawek jego kod wykazuje zbyt maêo podobieΣstw z poprawnÑ matrycÑ. Program po prostu nie zadziaêa.
6. Kontakt
Je╛eli CRTBUG nie zadziaêaê jak powinien, lub wyÿwietliê komunikat
o bê⌐dzie napisz na adres:
mabak@polbox.com
Maciej BÑk
¥ód½ 93249
Ul. Ejsmonda 3m40
Tel. (0-42) 642-2886
(0-601) 914-062
Je╛eli CRTBUG jakoÿ Ci pomógê - NAPISZ!
Nie wysyêaj pocztÑ skompresowanych programów, a jedynie opis zachowania CRTBUGa i nazw⌐ naprawianego programu.