Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Προβλημα με κομματι κωδικα σε vb6

Îåêßíçóå áðü ôï ìÝëïò NGF. Τελευταία δημοσίευση από το μέλος NGF στις 02-01-2007, 00:02. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-11-2006, 18:02 20347

    Προβλημα με κομματι κωδικα σε vb6

    Καλησπερα παιδια!
    Προσπαθω να γραψω ενα απλο antivirus. Εχω γραψει μια απλη μηχανη ανιχνευσης αλλα η μηχανη δεν φαινεται να συμπαθει ολα τα αρχεια. Οριστε ο κωδικας :

    Public Sub ScanFilenameThreat(FilePath As String, SignatureFile As String)
    On Error Resume Next

    Dim TBuffer As Byte, ABuffer As String, SigHex As String, X As Integer
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    TBuffer = vbNullString
    ABuffer = vbNullString
    SigHex = vbNullString
    X = vbNull

    Open FilePath For Binary As 1
    Do While Not EOF(1)
    DoEvents
    Get 1, , TBuffer
    ABuffer = ABuffer & Hex(TBuffer)

    '''''''''''''''''''''''''''''''''
    Open SignatureFile For Input As #2
    Do While Not EOF(2)
    DoEvents
    Line Input #2, SigHex

    MsgBox "eftase"
    If InStr(1, ABuffer, SigHex, vbTextCompare) Then

    MsgBox "eftase mesa"
    GoTo ThreatFound

    End If
    DoEvents
    Loop
    Close #2

    DoEvents
    ''''''''''' ''''''''''''''''''''''''
    Loop
    'MsgBox "now finished"
    Close #1
    GoTo NoThreat

    ThreatFound:
    Close #1
    Close #2
    ABuffer = vbNullString
    TBuffer = vbNullString
    FileInfected = True
    Exit Sub

    NoThreat:
    Close #1
    Close #2
    ABuffer = vbNullString
    TBuffer = vbNullString
    FileInfected = False
    Exit Sub
    End Sub


    Εχω φτιαξει καποια definition σε δεκαεξαδικο κωδικα απο το eicar test file. Το θεμα ειναι οτι σε καποια αρχεια αν δεν βρει το definition μεσα δηλαδη σαν ιο επιστρεφει οτι δεν υπαρχει ιος. Αν βρει επιστρεφει οτι υπαρχει. Και καλα κανει. Αλλα σε καποια αρχεια δεν επιστρεφει τιποτα. Το εχω φτιαξει παντα να επιστρεφει κατι-η αληθεια οτι υπαρχει ιος η οχι. Αλλα σε καποια αρχεια οπως παραδειγμα μια εικονα και μια φορμα της vb6 δεν επιστρεφει τιποτα. Μενει εκει. Σε αυτα τα αρχεια η μηχανη φαινεται να σταματα αμεσως πριν το instr. Γι αυτο εβαλα τα msgbox για να ξερω μεχρι που πηγε ο κωδικας.

    Εχετε ιδεα τι φταιει?

    Ξεχασα να πω οτι καποιες μεταβλητες που δεν εχω δηλωσει μεσα σε αυτο το κομματι του κωδικα ειναι δηλωμενες στα declarations οποτε δεν υπαρχει προβλημα με αυτο.
    Burning The Fire........
  •  15-11-2006, 21:17 20417 σε απάντηση της 20347

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Αν και ανοίγεις τα αρχεία σαν binary streams, η αναζήτηση που κάνει μέσα σε αυτά είναι για strings - InStr(1, ABuffer, SigHex, vbTextCompare).

    Αυτό πιθανώς να σου δίνει και τα εσφαλμένα αποτελέσματα - μπορεί να τρελένεται από τα 0/nulls που μπορεί να περιέχει ένα binary αρχείο.

    Προσωπικά, για να κάνω κάτι τέτοιο θα πρότινα, να μην χρησιμοποιηθούν pure BASIC commands - θα πρότεινα να χρησιμοποιηθούν τα αντίστοιχα WinAPI calls. Σίγουρα θα έδιναν καλύτερο perfomance και πιο αξιόπιστα αποτελέσματα...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-11-2006, 23:38 20565 σε απάντηση της 20347

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Api...οχ. Ξερεις το api call αντι για instr?
    Burning The Fire........
  •  25-11-2006, 09:54 21134 σε απάντηση της 20347

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Περασα τον κωδικα σε vb.net 2005 και οριστε τι πεταει στο immediate window:

    A first chance exception of type 'System.IO.IOException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.EndOfStreamException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.IOException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.EndOfStreamException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.IOException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.EndOfStreamException' occurred in Microsoft.VisualBasic.dll

    A first chance exception of type 'System.IO.IOException' occurred in Microsoft.VisualBasic.dll

    Αυτα τα πεταει συνεχεια και η μπαρα του immediate ολο και γινεται μικροτερη μεχρι να σταματησω το προγραμμα. Αυτο αρχιζει με το που θα καλεσω την sub scanfilenamethreat
    Burning The Fire........
  •  25-11-2006, 12:51 21137 σε απάντηση της 21134

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Το On Error Resume Next είναι σκέτη κατάρα στη VB6 γιατί αφήνει τον κώδικα να τρέχει ακόμα και αν έχει συναντήσει σοβαρά προβληματα. Στην VB.NET είναι εντελώς περιττό. Βγάλτο από τον κώδικα αν θέλεις να βρεις πραγματικά γιατί δεν δουλεύει.

    Όπως είναι τώρα ο κώδικας σου θα συνεχείσει να δουλεύει, άσχετα από πόσα error συναντάει. Μπορεί π.χ. να μην βρίσκει ένα αρχείο, αλλά θα προσπαθήσει να διαβάσει το πρώτο του byte. Κοίτα το description των δύο πρώτων exceptions για να δεις τί συμβαίνει. Μπορεί π.χ. να προσπαθείς να διαβάσεις ανύπαρκτο αρχείο. Όλα τα υπόλοιπα exceptions είναι ουσιαστικά είναι τα ίδια επαναλαμβανόμενα.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-12-2006, 14:56 22059 σε απάντηση της 20347

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Τελικα το εφτιαξα αλλιως. Τελειως αλλιως και με καλυτερη ταχυτητα. Ευχαριστω!
    Burning The Fire........
  •  12-12-2006, 15:19 22062 σε απάντηση της 22059

    Re: Απ: Προβλημα με κομματι κωδικα σε vb6

    Θα μπορούσες να μοιραστείς μαζί μας τον νέο τρόπο?
    -------------------------------
    Κ. Γιαγιάς

    Θα ήθελα να είμαι μέσα στην φωτογραφία και όχι εδώ!!!!

    http://beastie06.wordpress.com
  •  02-01-2007, 00:02 22944 σε απάντηση της 20347

    Απ: Προβλημα με κομματι κωδικα σε vb6

    Ναι. Ο τροπος που θα χρησιμοποιω ειναι απλος και οχι με τοσο ακριβεια στην ανιχνευση γιατι υποτιθεται οι πραγματικοι ιοι μπαινουν σε αρχεια μεσα οποτε ο μονος τροπος που θα δουλευει πραγματικα ειναι αυτος που δοκιμασα και δεν δουλευε. Ο τροπος ειναι το md5 ! Απλος θα παιρνω md5 απο malware και θα γραφω τη βαση δεδομενων. Ειναι απλο και δουλευει. Στην αρχη ειπα crc32 αλλα γιατι το κανω λεω μετα. Ας χρησιμοποιησω το .net που ειναι πιο ευκολο. Ετσι και αλλιως δεν με νοιαζει να γινει κορυφη-απλος να δουλεψει
    Burning The Fire........
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems