Twindows Internals (RO) despre Windows, software si alte lucruri de care ne mai lovim

14Dec/0611

Cum ma ajuta un tool bun sa ma uit la TV

Mi-am reinstalat azi tunerul TV si am vrut sa iau si ultima versiune de software (3.1.1.2) de pe site-ul companiei producatoare. Am facut download iar la prima rulare aplicatia a crapat.

Pentru ca insistam sa ma uit la TV, am decis sa investighez problema :) . M-am gandit la ce tool m-ar putea ajuta mai mult in situatia de fata si m-am oprit la IDA pe care l-am luat de aici . Apoi am deschis fisierul cu pricina: C:\Program Files\WinFast\WFTVFM\WFTV.exe si l-am lasat pe IDA sa-l analizeze.

(click pe poza pentru a o mari)

Apoi am pornit debugger-ul din IDA. La scurt timp a ajuns la codul cu pricina si a dat un warning:

(click pe poza pentru a o mari)

Ducandu-ma la cod am observat ca dereferentia un pointer NULL. Dupa cum se vede, incerca sa acceseze membrul unei structuri care nu era alocata (registrul EDX avea valoarea zero si se incerca accesarea zonei de la adresa EDX+4)

(click pe poza pentru a o mari)

Mai departe am vrut sa aflu ce e cu structura respectiva. Am vazut ca eroarea are loc in apelul functiei fgetc, datorita parametrului stream care este NULL si a carui valoare era copiata in EDX. De aici am banuit ca se incearca citirea dintr-un fisier care nu a fost deschis. Pentru a confirma banuiala am apelat tot la IDA. M-am uitat pe stiva pentru a vedea cine este apelantul lui fgetc si pentru a vedea de unde vine argumentul eronat.

(click pe poza pentru a o mari)

Asa ca am dat dublu-click pe adresa apelantului (47B48Ah) pentru a vedea codul.

Am vrut sa vad apoi cum se ajunge cu executia aici asa ca am urmat calea indicata de a doua sageata albastra. Am ajuns asadar la locul unde s-a incercat deschiderea fisierului deci banuiala era confirmata. Se incerca deschiderea fisierului wincdl.cfg.

(click pe poza pentru a o mari)

Uitandu-ma pe codul dezasamblat am vazut ca nu se facea vreo verificare a rezultatului apelului catre fopen. In concluzie, in cazul in care deschiderea esueaza (fopen intoarce NULL), cazul nu este tratat si se merge mai departe cu un pointer NULL. Pentru a verifica aceasta, m-am uitat la rezultatul intors de fopen (stocat in registrul EAX). S-a dovedit a fi NULL, deci deschiderea fisierului a esuat.

M-am uitat in directorul aplicatiei si am observat ca fisierul lipsea asa ca am decis sa creez un fisier gol cu numele respectiv si sa rulez din nou aplicatia. Surpriza! Aplicatia a rulat fara probleme!

Am observat cu aceasta ocazie inca o data cat de importante sunt tratarea erorilor si testarea in ciclul de dezvoltare al unui produs software. Am anuntat compania producatoare si voi reveni cu un update in cazul in care primesc un raspuns.

In final, ii multumesc lui IDA pentru ca datorita acestui soft minunat acum ma pot uita la TV fara probleme :)

VN:F [1.9.3_1094]
Rating: 5.0/5 (3 votes cast)
VN:F [1.9.3_1094]
Rating: 0 (from 2 votes)
Cum ma ajuta un tool bun sa ma uit la TV, 5.0 out of 5 based on 3 ratings

Most Commented Posts

Filed under: Software Leave a comment
Comments (11) Trackbacks (1)
  1. Uau! Esti tare!

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  2. eu am dezinstalat+instalat winfast’ul si o mers:)…oricum, nicely done…

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  3. wicked

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  4. Foarte tare domnule. Esti un adevarat. Te invidiez.

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  5. Subscriu lui Alexandru. Candva o sa imi cumpar o palarie ca sa mi-o pot ridica in fata voastra.

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  6. respect pt tine si stiintza ta, OMULE.

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  7. Ma tot intrebam eu de ce crapa asa des ultima versiune de winfast (TV2000 Expert = tunerul meu preferat , pe care l-am recomand tuturor celor care doreau sa scape de TV).

    Chiar nu imi imaginam ca poti face asa ceva (analizarea erorilor) fara a decompila exe-ul.

    Felicitari.

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  8. eu cred k esti cam maniac !

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  9. esti fenomenal! ar fi beton daca ai face un post si despre cauza aparitiei unui blue screen..

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: -1 (from 1 vote)
  10. esti tare
    am creat cate un fis gol wincdl.cfg in fiecare folder din C:\Program Files\WinFast si surpriza, a mers :)

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  11. Ai dreptate, a mers cu adaugarea fisierului respectiv…. chiar nu stiam ce sa ii mac fac mai ales ca dezinstalasem si reinstalasem de o groaza de ori si driverele si aplicatia….

    Multam.

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

Leave a comment