ntaryl Δημοσ. 18 Σεπτεμβρίου 2008 Δημοσ. 18 Σεπτεμβρίου 2008 καλησπερα Παιδια πριν λιγο καιρο προσπαθουσα να κανω Hooking καποια apis .Τελικα με λιγη βοηθεια απο τον Reker το εφτιαξα . Τωρα αυτο που θελω ειναι να κανω το αντιθετο .Να κατορθωσω να κανω Unhook καποια api .που χρησιμοποιουνται απο ενα αρχειο .Παραδειγμα αν εχω το αρχειο test ,εμφυτευοντας μεσα σε αυτο ενα Dll για να μπορεσω να κανω unhook καποιο συγκεκριμενο api . ελπιζω να εξηγησα σωστα Υ.Γ Directx φιλε μου βοηθα την κατασταση
Directx Δημοσ. 18 Σεπτεμβρίου 2008 Δημοσ. 18 Σεπτεμβρίου 2008 Φίλε ntaryl καλησπέρα, δυστυχώς δεν έχω μια άμεση απάντηση στο ερώτημα σου καθώς δεν έχω ασχοληθεί τόσο πολύ με αυτές τις διαδικασίες (API Hooking, Redirection, Unhooking) βλέπεις δεν χρειάσθηκαν ως τώρα στις εφαρμογές ή τα πειράματα μου.. οπότε η ενασχόληση υπήρξε ευκαιριακή. Τώρα, πρόσεξε, αν θέλεις να φορτώσεις μια DLL σε ένα διαφορετικό process μπορείς να χρησιμοποιήσεις την SetWindowsHookEx ορίζοντας το ανάλογο HISTANCE (MODULE ουσιαστικά για τα Windows 32bit+) στο οποίο θα προσκολληθεί η DLL σου ώστε να γίνει τμήμα του address space αυτής της Process – είναι η πιο εύκολη ρουτίνα και προσφέρεται από το σύστημα για αυτή την δουλειά. Τέλος, το Unhook προϋποθέτει ότι θα πρέπει να έχεις αποθηκεύσει κάπου την αυθεντική διεύθυνση του ανάλογου API call οπότε οφείλεις να την επαναφέρεις -αν θυμάμαι καλά ένα προγενέστερο κώδικα που είχες αναρτήσει, τροποποιούσες το JMP address προς την MessageBox (ελπίζω να μην με απατά η μνήμη μου), νομίζω ότι μπορείς να εφαρμόσεις το αντίστροφό. Θεωρητικά εγώ θα έκανα redirect σε μια δικιά μου διεύθυνση (overwrite του address με την βοήθεια του WriteProcessMemory) που θα πρόσθετα στην Process και ύστερα απλά θα την αφαιρούσα κάνοντας restore το παλιό της DWORD (διεύθυνση μνήμης) που θα είχα αποθηκεύσει με την ReadProcessMemory πριν την αλλαγή. Τώρα αν δεν είχα κάνει εγώ το αρχικό Hook.. αφού έβρισκα την θέση του API που θέλω, πχ CreateFile θα φρόντιζα να έκανα overwrite την διεύθυνση της (WriteProcessMemory) με την «σωστή» (address) που κάνει export το Λ.Σ. μου –δες το import table (αν και στα real world scenarios, είναι το πρώτο που "καταστρέφεται" (προστατεύεται) από τους packers / PE protectors). Πιο συγκεκριμένος δεν μπορώ να γίνω
ntaryl Δημοσ. 18 Σεπτεμβρίου 2008 Μέλος Δημοσ. 18 Σεπτεμβρίου 2008 ευχαριστω πολυ Φιλε μου το Dll το φορτωνω με Dll injection και το hooking υλοποιειται χωρις προβλημα . Αυτο που θελω να κανω ειναι απο ενα ασχετο αρχειο να φυτεψω το dll μου και να κανω execute τον κωδικα ετσι ωστε να κανω unhook καποια api και να μπορεσω να περασω ανενοχλητος καποιες λειτουργιες παντως ευχαριστω πολυ
Directx Δημοσ. 18 Σεπτεμβρίου 2008 Δημοσ. 18 Σεπτεμβρίου 2008 Ωραίος, λοιπόν.. αν θες να εκτελεσθεί αμέσως κάποιος κώδικας με το φόρτωμα της DLL σου μπορείς να κάνεις Export ένα DllMain function το οποίο εκτελείται μόλις καλέσεις την LoadLibrary του DLL σου ή όταν το process σου δημιουργεί νέα Threads ή όταν το process ξεφορτώνεται από το σύστημα κτλ (δες την DllMain στο WinAPI SDK διότι υπάρχουν αρκετές παγίδες μαζί της όμως!!). Αν από την άλλη πλευρά δεν σε εξυπηρετεί κάτι τέτοιο, μπορείς να στήσεις ένα notification σύστημα στον κώδικα της DLL που θα παρακολουθεί (πχ ως Timer κτλ) κάποια system events, πχ. ένα message σου ή το setαρισμα κάποιου Atom (κτλ) και όταν το λαμβάνει η εφαρμογή αυτό θα κάνει ότι επιθυμείς -hooking / unhooking κτλ, δες το ως ένα είδος Client (DLL) / Server (κάποιο δικό σου EXE - controller ας πούμε).
ntaryl Δημοσ. 19 Σεπτεμβρίου 2008 Μέλος Δημοσ. 19 Σεπτεμβρίου 2008 thanks Φιλε θα δοκιμασω κανενα πειραμα τα λεμε
ntaryl Δημοσ. 20 Σεπτεμβρίου 2008 Μέλος Δημοσ. 20 Σεπτεμβρίου 2008 καλησπερα Χτες μετα απο πολλη προσπαθεια μπορεσα να κανω inject ενα dll μεσασ στον taskmanager και να κανω hook -TerminateProcess . χιχιχχι Σημερα μαλλον εχει πειραμα να κανω Unhook καποιο api απο το AV(avast)
Directx Δημοσ. 23 Σεπτεμβρίου 2008 Δημοσ. 23 Σεπτεμβρίου 2008 Σωστός! Υ.Γ. Βρε, άσε ήσυχο το AVAST (μου)
Evgenios1 Δημοσ. 24 Σεπτεμβρίου 2008 Δημοσ. 24 Σεπτεμβρίου 2008 Παιδες δε μου λετε κανα app με το οποιο μπορω να βλεπω τοις μεθοδου που ειναι export απο ενα dll? (εχω το View Dependencies απο το vc++ 6, αλλα εχει παλιοσει και το σαϊτ που το υποστηριζει δεν υπαρχει :/ ασε που το μονο που βλεπω με αυτο ειναι το ονομα της function)
Directx Δημοσ. 24 Σεπτεμβρίου 2008 Δημοσ. 24 Σεπτεμβρίου 2008 Μπορείς να δοκιμάσεις το tdump.exe που έρχεται μαζί με τους CodeGear (Borland) compilers το οποίο κάνει πλήρες dump στο stdout όλων των περιεχόμενων (resources, import & export tables κτλ) των dll (και άλλων pe αρχείων).
Aesmade Δημοσ. 24 Σεπτεμβρίου 2008 Δημοσ. 24 Σεπτεμβρίου 2008 Υπάρχει και το PEiD που δείχνει τα import, export και resource table, κάποιες πληροφορίες από NT header, τις sections και οποιοδήποτε packer ή/και compiler χρησιμοποιήθηκε.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.