Hallo,
ich habe ein Code gefunden womit man über eine C++ .DLL eine .NET .DLL in einen Process Injecten kann. Nur leider da ich kein Plan von C++ haben wollte ich fragen ob mir jemanden beim beheben des Fehlers helfen kann.
Der Code
Debug Ausgabe:
Mit freundlichen Gruß
Sinlyu.
ErfinderDesRades - Moderator - Notiz: Code-Injection stellt üblicherweise eine illegale Manipulation von Software dar.
KnowHow mit derlei "Malware-Potential" wird auf VBP nicht in aller Öffentlichkeit besprochen und publiziert
--> closed
ich habe ein Code gefunden womit man über eine C++ .DLL eine .NET .DLL in einen Process Injecten kann. Nur leider da ich kein Plan von C++ haben wollte ich fragen ob mir jemanden beim beheben des Fehlers helfen kann.
C-Quellcode
- #pragma comment(lib,"MSCorEE.lib")
- #include <mscoree.h>
- #include <metahost.h>
- ICLRRuntimeHost* pClrHost = NULL;
- int WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
- {
- switch(dwReason)
- {
- case DLL_PROCESS_ATTACH:
- {
- // Get the policy object, so we can determine which runtime to use.
- ICLRMetaHostPolicy* pMetaHostPolicy = NULL;
- HRESULT hr = CLRCreateInstance(CLSID_CLRMetaHostPolicy, IID_ICLRMetaHostPolicy, (LPVOID*)&pMetaHostPolicy);
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Could not create a ICLRMetaHostPolicy object!", L"Injection - Error", MB_OK);
- return 1;
- }
- ICLRRuntimeInfo* pRuntimeInfo = NULL;
- // Get the runtime info object. Allow the assembly to tell US what runtime to use.
- DWORD pcchVersion = 0;
- DWORD dwConfigFlags = 0;
- hr = pMetaHostPolicy->GetRequestedRuntime(METAHOST_POLICY_HIGHCOMPAT,
- L"C:\\Test.dll", NULL,
- NULL, &pcchVersion,
- NULL, NULL, &dwConfigFlags,
- IID_ICLRRuntimeInfo,
- (LPVOID*)&pRuntimeInfo);
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Could not create an ICLRRuntimeInfo object.", L"Injection - Error", MB_OK);
- return 1;
- }
- // Allow the runtime to load .NET 2.0 mixed-mode libraries. (This covers 2.0-3.5 SP1)
- hr = pRuntimeInfo->BindAsLegacyV2Runtime();
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Could not bind as legacy v2 runtime.", L"Injection - Error", MB_OK);
- return 1;
- }
- hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&pClrHost);
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Could not get an instance of ICLRRuntimeHost!", L"Injection - Error", MB_OK);
- return 1;
- }
- hr = pClrHost->Start();
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Failed to start the CLR!", L"Injection - Error", MB_OK);
- return 1;
- }
- DWORD dwRet = 0;
- // Execute the Main func in the domain manager, this will block indefinitely.
- // (Hence why we're in our own thread!)
- hr = pClrHost->ExecuteInDefaultAppDomain(
- L"C:\\Test.dll", // Executable path
- L"Test.bc",
- L"InjectedMain",
- L"Hello World!",
- &dwRet);
- if (FAILED(hr))
- {
- MessageBox(NULL, L"Failed to execute in the default app domain!", L"Injection - Error", MB_OK);
- return 1;
- }
- }
- break;
- case DLL_THREAD_ATTACH: break;
- case DLL_THREAD_DETACH: break;
- case DLL_PROCESS_DETACH: break;
- }
- //FreeLibraryAndExitThread(hInstance, 0);
- return true;
- }
Debug Ausgabe:
Quellcode
- 1>------ Erstellen gestartet: Projekt: NetLoader, Konfiguration: Debug Win32 ------
- 1>Kompilieren...
- 1>NetLoader.cpp
- 1>c:\users\***\documents\visual studio 2008\projects\netloader\netloader\NetLoader.h(4) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "metahost.h": No such file or directory
- 1>Das Buildprotokoll wurde unter "file://c:\Users\***\Documents\Visual Studio 2008\Projects\NetLoader\NetLoader\Debug\BuildLog.htm" gespeichert.
- 1>NetLoader - 1 Fehler, 0 Warnung(en)
- ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Mit freundlichen Gruß
Sinlyu.
ErfinderDesRades - Moderator - Notiz: Code-Injection stellt üblicherweise eine illegale Manipulation von Software dar.
KnowHow mit derlei "Malware-Potential" wird auf VBP nicht in aller Öffentlichkeit besprochen und publiziert
--> closed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()