[DLL Injection] Firefox.exe



  • GetModuleHandle("kernel32.dll") anstatt von GetModuleHandle("kernel32") ?

    Edit: msdn sagt das default .dll wird ergänzt, naja war ne Idee.



  • - nur weil der Thread erstellt wurde, heißt das noch lange nicht, dass auch die DLL geladen wurde
    - eventuell: Du weißt, das man keine 32Bit DLL's in einen 64Bit Prozess laden kann?
    - PROCESS_ALL_ACCESS: brachst das wirklich - meiner Erfahrung nach nicht.
    - Allgemein: das Prog. schon mal als Admin. gestartet?



  • Update:
    Habe die DLL folgendermassen umgebaut:

    /* Replace "dll.h" with the name of your header */
    #include "dll.h"
    #include <windows.h>
    
    DllClass::DllClass()
    {
    
    }
    
    DllClass::~DllClass ()
    {
    
    }
    
    // All startup code goes in OnInitialize
    extern "C" __declspec(dllexport) void __cdecl Initialize(void)
    {
       // Real Code
       MessageBox(NULL, "Injection succeeded", "DLL Injection", 0);
       Beep(1000, 1000);
    }
    
    BOOL APIENTRY DllMain(HMODULE hModule, DWORD ulReason, LPVOID lpReserved)
    {
         MessageBox(NULL, "Injection succeeded", "DLL Injection", 0);
         Beep(1000, 1000);
    
         // Get rid of warnings
         hModule; lpReserved; ulReason;
    
         // We do not need to know about Threaded events, so disable them (reduces overhead)
         DisableThreadLibraryCalls(hModule);
    
         // Load the DLL
         return TRUE;     
    }
    

    Nun passiert was eigenartiges:
    Die MessageBox wird nicht angezeigt, aber nach einer bestimmten Zeitspanne (meistens 1-3 Minuten) gibt der Computer den beep() Ton von sich...

    Kann sich das wer erklären?

    Danke und lg



  • questionär schrieb:

    - nur weil der Thread erstellt wurde, heißt das noch lange nicht, dass auch die DLL geladen wurde
    - eventuell: Du weißt, das man keine 32Bit DLL's in einen 64Bit Prozess laden kann?
    - PROCESS_ALL_ACCESS: brachst das wirklich - meiner Erfahrung nach nicht.
    - Allgemein: das Prog. schon mal als Admin. gestartet?

    1. Stimmt.
    2. Ja, aber firefox ist ein 32 Bit Prozess..
    3. Habe es schon mit und ohne versucht.
    4. Ja. Keine Veränderungen

    Gruss



  • Meinen Tipp befolgt? Was sagt GetExitCodeThread?



  • Ethon schrieb:

    Meinen Tipp befolgt? Was sagt GetExitCodeThread?

    Kannst du mir bitte kurz erklären wie ich den einbauen muss?
    Danke & lg



  • Hab den Code nun angepasst:

    DWORD lpExitCode;
           GetExitCodeThread(hRemoteThread,&lpExitCode);
           if(STILL_ACTIVE == lpExitCode)
              cout << "Thread is still active..." <<endl;
           else
              cout << "Thread has been closed..." <<endl;
    
           cout << "[information] Got GetExitCodeThread: " <<lpExitCode <<endl;
    

    Das Ergebnis:

    path is: C:\Dev-Cpp\projects\dll.dll
    Waiting for firefox.exe...
    Process detected!

    PID: 1736

    Injecting dll.dll...

    Thread has been closed...
    [information] Got GetExitCodeThread: 1628176384
    Dll succesfully injected!
    Drücken Sie eine beliebige Taste . . .



  • PUSH again 🙂



  • Wie wäre damit selber mal das Gehirn einzuschalten?

    Thread has been closed...
    [information] Got GetExitCodeThread: 1628176384
    Dll succesfully injected!

    Dein Loadlibrary Aufruf war offensichtlich erfolgreich. Die DLL wurde im Zielprozess an Adresse 0x610C0000 geladen.



  • Ja?
    Aber es passiert offensichtlich nichts - darum frage ich mich wo der Fehler liegt.



  • Woher sollen wir das wissen?
    Firefox ist äußerst komplex und startet beim Initialisieren eine Menge Threads. Möglicherweise gibt es da irgendwelche Seiteneffekte mit Deiner hässlichen MessageBox.

    Probiere doch erst einmal einen einfachen Prozess zu injecten! Wie wäre es zum Beispiel mit Notepad.exe? Ist das wirklich so schwer auch mal einen Schritt zurück zu gehen?



  • Hallo,

    Das war ein Kommunikationsfehler - meine Schuld.

    Natürlich habe ich es schon bei folgenden Programmen versucht:
    - Firefox
    - IE
    - calc
    - explorer
    - pinball (das Game)
    - Notepad

    Bei allen leider die selbe Problematik...
    Darum bin ich ja so verwundert.

    Danke und lg



  • Vl noch zur Info:

    Habe es am Beispiel von DeepBurner auch getestet:

    My DLL Injector

    Library: dll.dll
    Process: DeepBurner.exe

    path is: C:\Dev-Cpp\projects\dll.dll
    Waiting for DeepBurner.exe...
    Process detected!

    PID: 1136

    Injecting dll.dll...

    Thread has been closed...
    [information] Got GetExitCodeThread: 1628176384
    Dll succesfully injected!
    Drücken Sie eine beliebige Taste . . .

    Dann habe ich es für Notepad getestet, und siehe da:

    My DLL Injector

    Library: dll.dll
    Process: notepad.exe

    path is: C:\Dev-Cpp\projects\dll.dll
    Waiting for notepad.exe...
    Process detected!

    PID: 6032

    Injecting dll.dll...

    Injection failed
    Drücken Sie eine beliebige Taste . . .

    GetLastError()

    Gibt auch kein Ergebnis 😞



  • Ich gehe mal davon aus das Dein Injector schon läuft bevor Du den Targetprozess startest?
    Falls das so ist: Bevor Du injectes solltest Du unbedingt ein bisschen Zeit vergehen lassen, bis sich der Prozess vollständig initialisiert hat.

    Das hier

    while (!ProcessExists(ProcessName)){ }
    

    Ist übrigens auch Mist und verbrät viel Rechenzeit.
    Mach mal so:

    while (!ProcessExists(ProcessName)){ Sleep(1000);}
    
    // zu Testzwecken:
    // zusätzlich Zeit einräumen für das starten des Prozesses
    Sleep(5000);
    


  • Hallo,

    Danke für deine Antwort.
    Nein ich lasse den Prozess in der Regel 1-2 Minuten laufen, bevor ich injecte...

    HAbe den Code mal angepasst - leider auch keine Änderungen.

    Gruss



  • In Deinem Code waren noch einige komische Dinge.
    So wie hier unten geht es bei mir problemlos. Achtung ich habe hier mit wchar_t gearbeitet.

    Natürlich ohne Gewähr.

    // Injector.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <windows.h>
    #include <tlhelp32.h>
    
    using namespace std;
    
    DWORD GetProcID(wstring ProcName)
    {
        HANDLE hProcessSnap;
        PROCESSENTRY32 pe32;
    
        hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        pe32.dwSize = sizeof(PROCESSENTRY32); //** I had problems for weeks until I realized this was missing -.-
        do
        {
        //cout << pe32.szExeFile <<"\n";
               if(pe32.szExeFile == ProcName)
               {
                  DWORD ProcId = pe32.th32ProcessID;
                  CloseHandle(hProcessSnap);
                  return ProcId;
               }
        }
        while(Process32Next(hProcessSnap, &pe32));
        CloseHandle(hProcessSnap);
    
        return 0;
    }
    
    bool ProcessExists(wstring process)
    {
        HANDLE hProcessSnap;
        PROCESSENTRY32 pe32;
        hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        pe32.dwSize = sizeof(PROCESSENTRY32);
        do
        {
          if(pe32.szExeFile == process)
          {
           CloseHandle(hProcessSnap);
           return true;
          }
        }
        while(Process32Next(hProcessSnap, &pe32));
    
        CloseHandle(hProcessSnap);
    
        return false;
    } 
    
    int _tmain(int argc, wchar_t* argv[])
    {
    	wstring DLLName = L"InjectorDll.dll";
    	//wstring ProcessName = L"firefox.exe";
    	wstring ProcessName = L"notepad.exe";
    	//bool CloseAfterCorrectInjection=true;
    
    	DWORD procID = 0;
    	system("color a");
    	wcout << L"My DLL Injector\n" << endl;
    	wcout << L"Library: " << DLLName << endl;
    	wcout << L"Process: " << ProcessName << endl << endl;
    
    	wchar_t awBuffer[MAX_PATH];
    	GetCurrentDirectory(MAX_PATH, awBuffer) ;
    	wstring dll = awBuffer;
    	dll.append(L"\\");
    	dll.append(DLLName);
    
    	HMODULE hLocKernel32 = GetModuleHandle(L"Kernel32.dll");
    	FARPROC hLocLoadLibrary = GetProcAddress(hLocKernel32, "LoadLibraryW");
    	HANDLE hToken;
    	TOKEN_PRIVILEGES tkp;
    
    	if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY | PROCESS_ALL_ACCESS, &hToken))
    	{
    		LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
    		tkp.PrivilegeCount = 1;
    		tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    		AdjustTokenPrivileges(hToken, 0, &tkp, sizeof(tkp), NULL, NULL);
    	}
    
    	HANDLE hProc = INVALID_HANDLE_VALUE;
    	wcout << L"Waiting for " << ProcessName << L"..." << endl;
    
    	while (!ProcessExists(ProcessName)){Sleep(1000);}
    
    	wcout << L"Process detected!" << endl << endl;
    	procID = GetProcID(ProcessName);
    	wcout << L"PID: " << procID  << endl << endl;
    	Sleep(2500);
    	wcout << L"Injecting " << dll << "..." << endl << endl;
    
    	LPVOID hRemoteMem = NULL;
    	hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
    
    	if (hProc != INVALID_HANDLE_VALUE)
    	{
    		hRemoteMem = VirtualAllocEx(hProc, NULL, (dll.size() + 1) * sizeof(wchar_t), MEM_COMMIT, PAGE_READWRITE);
    
    		if (hRemoteMem != NULL)
    		{
    			DWORD numBytesWritten;
    			WriteProcessMemory(hProc, hRemoteMem, dll.c_str(), (dll.size() + 1) * sizeof(wchar_t), &numBytesWritten);
    			HANDLE hRemoteThread = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)hLocLoadLibrary, hRemoteMem, 0, NULL);
    			bool res = false;
    
    			if (hRemoteThread != 0)
    			{
    				DWORD lpExitCode;
    				Sleep(1000);
    				GetExitCodeThread(hRemoteThread, &lpExitCode);
    
    				wcout << L"[information] Got GetExitCodeThread: " << lpExitCode << L" " << hex << lpExitCode <<endl;
    
    				if (lpExitCode != 0)
    				{
    					wcout << L"Dll succesfully injected!" << endl;
    				}
    				else
    				{
    					wcout << L"Injection failed " << GetLastError() << endl;
    				}
    
    				CloseHandle(hRemoteThread);
    			}
    			else
    			{
    				wcout << L"Injection failed " << GetLastError() << endl;
    			}
    		}
    		else
    		{
    			wcout << L"Injection failed " << GetLastError() << endl;
    		}
    	}
    	else
    	{
    		wcout << L"Injection failed " << GetLastError() << endl;
    	}
    
    	if (hProc != INVALID_HANDLE_VALUE)
    	{
    		if (hRemoteMem != NULL) VirtualFreeEx(hProc, hRemoteMem, (dll.size() + 1) * sizeof(wchar_t), MEM_RELEASE);
    		CloseHandle(hProc);
    	}
    
    	system("PAUSE");
    
    	return 0;
    }
    


  • Hallo,

    Danke.
    Hast du das mit Visual Studio C++ 2010 Express kompiliert?
    Dev-C++ lässt das nicht durch den Compiler (mal abgesehen von der stdafx.h)

    Danke und Gruss



  • Ja habe ich.
    Schmeiße Dev C++ weg. Nimm besser CodeBlocks oder VC++ Express.



  • Hab's jetzt mit VC++ versucht, jedoch schreit der Compiler nach 100terten Fehlern...
    Muss noch etwas inkludiert oder verändert werden?

    zur Info:

    testing.cpp(68): error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::wstring' akzeptiert (oder keine geeignete Konvertierung möglich)
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(679): kann 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' sein
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(726): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(764): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(811): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(937): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(944): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(951): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(958): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(968): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,std::wstring>(std::basic_ostream<_Elem,_Traits> &&,_Ty)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>,
    1> _Ty=std::wstring
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(1085): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(186): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(192): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(199): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(206): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(226): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(260): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(280): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(305): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(325): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(345): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(366): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(386): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(407): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(427): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(447): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(467): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(487): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> bei Anpassung der Argumentliste '(std::basic_ostream<_Elem,_Traits>, std::wstring)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1>testing.cpp(90): error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::wstring' akzeptiert (oder keine geeignete Konvertierung möglich)
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(679): kann 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' sein
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(726): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(764): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(811): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(937): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(944): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(951): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(958): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(968): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,std::wstring>(std::basic_ostream<_Elem,_Traits> &&,_Ty)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>,
    1> _Ty=std::wstring
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(1085): oder "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(186): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(192): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(199): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(206): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(226): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(260): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(280): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(305): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(325): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(345): oder "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)"
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>



  • Er kann kein geeignetes casting für die Streamoperationen finden. Aber eigentlich sollte es so gehen wie ich es gepostet habe.

    Was steht denn bei Dir zB in Zeile 68 und 90?


Anmelden zum Antworten