ntaryl Δημοσ. 26 Απριλίου 2008 Δημοσ. 26 Απριλίου 2008 Καλημερα παιδια Εχω βρει ενα παραδειγματακι στο pscode.com απο το Anubis αλλα ειναι γραμμενο σε C++ .Παρακαλω πολυ οποιος μπορει να το κανει Convert σε VB6. Ακομα και αν μπορει να καταγραψει τα βηματα που Κανει . ευχαριστω πολυ και καλη Ανασταση Ο κωδικας >#include <windows.h> #include <stdio.h> DWORD HookFunction(LPCSTR lpModule, LPCSTR lpFuncName, LPVOID lpFunction, unsigned char *lpBackup); BOOL UnHookFunction(LPCSTR lpModule, LPCSTR lpFuncName, unsigned char *lpBackup); int MyMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); BYTE hook[6]; void WinMainCRTStartup() { HookFunction("user32.dll", "MessageBoxA", MyMessageBoxA, hook); MessageBox(0, "HEY", "", MB_OK); } int MyMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { UnHookFunction("user32.dll", "MessageBoxA", hook); char msg[strlen(lpText)]; sprintf(msg, "HOOKED!!\n\n%s", lpText); int x = MessageBox(hWnd, msg, lpCaption, uType); HookFunction("user32.dll", "MessageBoxA", MyMessageBoxA, hook); return x; } DWORD HookFunction(LPCSTR lpModule, LPCSTR lpFuncName, LPVOID lpFunction, unsigned char *lpBackup) { DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandle(lpModule), lpFuncName); BYTE jmp[6] = { 0xe9, //jmp 0x00, 0x00, 0x00, 0x00, //address 0xc3 }; //retn ReadProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, lpBackup, 6, 0); DWORD dwCalc = ((DWORD)lpFunction - dwAddr - 5); //((to)-(from)-5) memcpy(&jmp[1], &dwCalc, 4); //build the jmp WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, jmp, 6, 0); return dwAddr; } BOOL UnHookFunction(LPCSTR lpModule, LPCSTR lpFuncName, unsigned char *lpBackup) { DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandle(lpModule), lpFuncName); if (WriteProcessMemory(GetCurrentProcess(), (LPVOID)dwAddr, lpBackup, 6, 0)) return TRUE; return FALSE; }
StavrosD Δημοσ. 26 Απριλίου 2008 Δημοσ. 26 Απριλίου 2008 Δεν είναι απαραίτητο να το κάνεις vb. Μπορείς να το κάνεις DLL και να το κάνεις import στην εφαρμογή που θα φτιάξεις σε vb, ή ακόμα καλύτερα να έχεις στο ίδιο solution και αρχεία vb και αρχεία c
ntaryl Δημοσ. 26 Απριλίου 2008 Μέλος Δημοσ. 26 Απριλίου 2008 καλησπερα φιλε μου Σ ευχαριστω παρα πολυ Μπορεις σε παρακαλω πολυ να δειξεις τον τροπο καλο απογευμα και καλη ανασταση
StavrosD Δημοσ. 26 Απριλίου 2008 Δημοσ. 26 Απριλίου 2008 Ο πιο απλός τρόπος είναι: Ξεκκινάς στο Visual studio. File->New project->διαλέγεις την C->class library (δεξιά). Βάζεις τον κώδικα που θες σε C. Αν δεν πρόκειται να κάνεις άλλες αλαγές στον κώδικα στην C, δημιουργείς ένα νέο project->κάνεις δεξί κλικ στο solution explorer-> add reference->browse->επιλέγεις το DLL Στην συνέχεια στον κώδικά σου βάζεις στην αρχή imports ... (το namespace στο dll) και μετά βλέπει η vb τις κλάσεις. Αν θα κάνεις παράλληλα αλλαγές στον κώδικα στην C, κάνε όπως πριν new project, αλλά πριν πατήσεις ΟΚ στο solution επέλεξε "add to solution", και στα references αντί για browse πάτα στο projec ts και επέλεξε το προηγούμενο που είναι στην C. Τέλος κάνε δεξί κλικ στο project build order και επέλεξε πρώτα να γίνεται compile το dll και μετά το windows application
Directx Δημοσ. 27 Απριλίου 2008 Δημοσ. 27 Απριλίου 2008 ntaryl μιας και ασχολείσαι με κάποια ιδιαίτερα θέματα - νομίζω ότι το καλύτερο που έχεις να κάνεις και στο λέω εντελώς φιλικά, ως συμβουλή, είναι να αφήσεις σιγά, σιγά την Visual BASIC και να προχωρήσεις σε C/WinAPI και παράλληλα σε Intel 80x86 Assembly για 32bit περιβάλλοντα. Η Visual BASIC, για τον τομέα που έχεις επιλέξει (ας τον πούμε low level programming ...), δεν σε βοηθά. Καλή συνέχεια. Υ.Γ. Το API Hook (redirection) που κάνει η ρουτίνα επιστρέφει λανθασμένη έξοδο -access violation- στον compiler μου, οπότε προσοχή
ntaryl Δημοσ. 27 Απριλίου 2008 Μέλος Δημοσ. 27 Απριλίου 2008 Χρονια πολλα και Χρηστος Ανεστη σε ολους -ες εδω. Σε ευχαριστω πολυ φιλε Directx για την συμβουλη σου .ειμαι λιγακι επιμονο ατομο και καποιες φορες βγαινει σε καλο . Εδω και πολυ καιρο λεω να αρχισω με C αφου υπαρχουν καποια καλα βιβλια για διαβασμα αλλα τρωγομαι να δοκιμασω Assembly καλυτερα .(Ψαχνω να βρω ενα καλο βιβλιο το οποιο θα ξεκιναει απο την αρχη με τα βασικα και να προχωραει) Αυτο το διαστημα ασχολουμε με το να βρω τροπο να εχω προσβαση σε Ring3 Level . Ειναι λιγο δυσκολο αλλα ελπιζω να βγαλω ακρη .Ειμαι λιγο Ξεροκεφαλος ειπαμε Η συγκεκριμενη γλωσσα εχει περιορισμενες δυνατοτητες αλλα υπαρχουν και καποιοι που την βοηθουν και την αναπτυσουν ωστε να την κανουν πιο λειτουργικη και τις προσθετουν καποιες Δυνατοτητες . Αμα ξεκινησω C-assembly θα εχω δυνατοτητα να παιξω σε επιπεδο Kernel. Το συγκκεριμενο παραδειγμα ειναι απο το pscode.com και συγκεκριμενα απο τον Anubis δεν εχω δοκιμασει να το κανω Compile Σχετικα με το αρχειο που θελω να κανω Convert με λιγο τυχη το βρηκα .χχαχαα Υ.Γ Καποια στιγμη να θυμηθω να ανεβασω ενα How to που εχω φτιαξει και εχει θεμα σχετικα με το Dll injection παντα σε Visual basic . καλο βραδυ
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.