Asoo, dachte du meinst ich solle alles weg machen, also komplett leer ohne irgendeine Funktion^^.
Stürzt natürlich auch ab, wenn ich die MessageBox entferne
Hier mal der Code:
Code:
///*
class CConsole {
FILE m_OldStdin, m_OldStdout;
bool m_OwnConsole;
public:
CConsole();
~CConsole();
};
static BOOL WINAPI MyConsoleCtrlHandler(DWORD dwCtrlEvent) { return dwCtrlEvent == CTRL_C_EVENT; }
//*/
class NTString
{
public:
DWORD length;
char command[256];
NTString(char *string)
{
length = strlen(string);
memcpy(command, string, length);
command[length] = 0;
}
};
//-------- Variablen Deklarieren ---------
std::string packet;
int first = 0;
long conn;
bool checkState[2];
SOCKET s;
SOCKADDR_IN addr;
HWND winNos;
HWND winNTKit;
CConsole *console;
DWORD pID;
//---------Functionen Deklarieren---------
char buffer[256];
int startWinsocket(void);
int main();
void searchNTKitServer();
void RecievePackets();
void setValues();
void SEND_TO_SERVER(char *packet);
void NosTale_Send(char *buffer);
//----------Console Deklarieren----------
CConsole::CConsole() : m_OwnConsole(false) {
if (!AllocConsole()) return;
SetConsoleCtrlHandler(MyConsoleCtrlHandler, TRUE);
RemoveMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
const int in = _open_osfhandle(INT_PTR(GetStdHandle(STD_INPUT_HANDLE)), _O_TEXT);
const int out = _open_osfhandle(INT_PTR(GetStdHandle(STD_OUTPUT_HANDLE)), _O_TEXT);
m_OldStdin = *stdin;
m_OldStdout = *stdout;
*stdin = *_fdopen(in, "r");
*stdout = *_fdopen(out, "w");
m_OwnConsole = true;
}
CConsole::~CConsole() {
if (m_OwnConsole) {
fclose(stdout);
fclose(stdin);
*stdout = m_OldStdout;
*stdin = m_OldStdin;
SetConsoleCtrlHandler(MyConsoleCtrlHandler, FALSE);
FreeConsole();
}
}
//------Alle Functionen Definieren-------
void SEND_TO_SERVER(char *packet)
{
DWORD SEND_EAX = ******, SEND_ADDR = *******;
__asm
{
MOV EAX, DWORD PTR DS : [SEND_EAX]
MOV EAX, DWORD PTR DS : [EAX]
MOV EAX, DWORD PTR DS : [EAX]
MOV EDX, packet
CALL SEND_ADDR
}
}
void NosTale_Send(char *buffer)
{
NTString str(buffer);
SEND_TO_SERVER(str.command);
return;
}
void searchNTKitServer()
{
if (first == 1)
{
closesocket(s);
closesocket(conn);
setValues();
}
conn = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
while (conn == SOCKET_ERROR)
{
conn = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
}
}
DWORD WINAPI AttachSucess(LPVOID unused)
{
pID = GetProcessId(GetCurrentProcess());
main();
return 0x0;
}
void RecievePackets()
{
recv(s, buffer, 256, 0);//Packete recieven
if (buffer != "")//Abfrage ob Packet angekommen ist
{
NosTale_Send(buffer);//Send Packet zu Nostale
cout << buffer << endl << endl;//Packet ausgabe
memset(buffer, '\0', 256);//Leere das recievte Packet
}
}
void setValues()
{
if (first == 1)
{
s = socket(AF_INET, SOCK_STREAM, 0);
memset(&addr, 0, sizeof(SOCKADDR_IN));
}
addr.sin_family = AF_INET;
addr.sin_port = htons(5555);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
}
//------------------------------------------
int main()
{
MessageBoxA(0, "Main started", "", MB_ICONERROR);
if (startWinsocket() == 0)
{
s = socket(AF_INET, SOCK_STREAM, 0);
if (s != INVALID_SOCKET)
{
memset(&addr, 0, sizeof(SOCKADDR_IN));
setValues();
searchNTKitServer();
first = 1;
stringstream ss;
ss << pID;
packet = ss.str();
send(s, packet.data(), sizeof(packet), 0);
//Console starten
console = new CConsole();
//Haupt-Schleife
while (true)
{
RecievePackets();
}
}
}
return 0;
}
int startWinsocket(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2, 0), &wsa);
}
//------------------------------------------
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, &AttachSucess, 0, 0, 0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}