Προς το περιεχόμενο

Μετατροπη απο C++ σε VB6.0


ntaryl

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημερα παιδια

Εχω βρει ενα παραδειγματακι στο 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;
}

Δημοσ.

Δεν είναι απαραίτητο να το κάνεις vb.

Μπορείς να το κάνεις DLL και να το κάνεις import στην εφαρμογή που θα φτιάξεις σε vb, ή ακόμα καλύτερα να έχεις στο ίδιο solution και αρχεία vb και αρχεία c

Δημοσ.

καλησπερα φιλε μου

Σ ευχαριστω παρα πολυ

Μπορεις σε παρακαλω πολυ να δειξεις τον τροπο

καλο απογευμα και καλη ανασταση

Δημοσ.

Ο πιο απλός τρόπος είναι:

Ξεκκινάς στο 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

Δημοσ.

ntaryl μιας και ασχολείσαι με κάποια ιδιαίτερα θέματα - νομίζω ότι το καλύτερο που έχεις να κάνεις και στο λέω εντελώς φιλικά, ως συμβουλή, είναι να αφήσεις σιγά, σιγά την Visual BASIC και να προχωρήσεις σε C/WinAPI και παράλληλα σε Intel 80x86 Assembly για 32bit περιβάλλοντα.

 

Η Visual BASIC, για τον τομέα που έχεις επιλέξει (ας τον πούμε low level programming ...), δεν σε βοηθά.

 

Καλή συνέχεια.

 

Υ.Γ.

Το API Hook (redirection) που κάνει η ρουτίνα επιστρέφει λανθασμένη έξοδο -access violation- στον compiler μου, οπότε προσοχή

Δημοσ.

Χρονια πολλα και Χρηστος Ανεστη σε ολους -ες εδω.

Σε ευχαριστω πολυ φιλε Directx για την συμβουλη σου .ειμαι λιγακι επιμονο ατομο και καποιες φορες βγαινει σε καλο .

Εδω και πολυ καιρο λεω να αρχισω με C αφου υπαρχουν καποια καλα βιβλια για διαβασμα αλλα τρωγομαι να δοκιμασω Assembly καλυτερα .(Ψαχνω να βρω ενα καλο βιβλιο το οποιο θα ξεκιναει απο την αρχη με τα βασικα και να προχωραει)

Αυτο το διαστημα ασχολουμε με το να βρω τροπο να εχω προσβαση σε Ring3 Level .

Ειναι λιγο δυσκολο αλλα ελπιζω να βγαλω ακρη .Ειμαι λιγο Ξεροκεφαλος ειπαμε

Η συγκεκριμενη γλωσσα εχει περιορισμενες δυνατοτητες αλλα υπαρχουν και καποιοι που την βοηθουν και την αναπτυσουν ωστε να την κανουν πιο λειτουργικη και τις προσθετουν καποιες Δυνατοτητες .

Αμα ξεκινησω C-assembly θα εχω δυνατοτητα να παιξω σε επιπεδο Kernel.

Το συγκκεριμενο παραδειγμα ειναι απο το pscode.com και συγκεκριμενα απο τον Anubis δεν εχω δοκιμασει να το κανω Compile

Σχετικα με το αρχειο που θελω να κανω Convert με λιγο τυχη το βρηκα .χχαχαα

 

Υ.Γ Καποια στιγμη να θυμηθω να ανεβασω ενα How to που εχω φτιαξει και εχει θεμα σχετικα με το Dll injection παντα σε Visual basic .

καλο βραδυ

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...