.Net Libary über C++ in Process Injecten

  • C++

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    .Net Libary über C++ in Process Injecten

    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


    C-Quellcode

    1. #pragma comment(lib,"MSCorEE.lib")
    2. #include <mscoree.h>
    3. #include <metahost.h>
    4. ICLRRuntimeHost* pClrHost = NULL;
    5. int WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    6. {
    7. switch(dwReason)
    8. {
    9. case DLL_PROCESS_ATTACH:
    10. {
    11. // Get the policy object, so we can determine which runtime to use.
    12. ICLRMetaHostPolicy* pMetaHostPolicy = NULL;
    13. HRESULT hr = CLRCreateInstance(CLSID_CLRMetaHostPolicy, IID_ICLRMetaHostPolicy, (LPVOID*)&pMetaHostPolicy);
    14. if (FAILED(hr))
    15. {
    16. MessageBox(NULL, L"Could not create a ICLRMetaHostPolicy object!", L"Injection - Error", MB_OK);
    17. return 1;
    18. }
    19. ICLRRuntimeInfo* pRuntimeInfo = NULL;
    20. // Get the runtime info object. Allow the assembly to tell US what runtime to use.
    21. DWORD pcchVersion = 0;
    22. DWORD dwConfigFlags = 0;
    23. hr = pMetaHostPolicy->GetRequestedRuntime(METAHOST_POLICY_HIGHCOMPAT,
    24. L"C:\\Test.dll", NULL,
    25. NULL, &pcchVersion,
    26. NULL, NULL, &dwConfigFlags,
    27. IID_ICLRRuntimeInfo,
    28. (LPVOID*)&pRuntimeInfo);
    29. if (FAILED(hr))
    30. {
    31. MessageBox(NULL, L"Could not create an ICLRRuntimeInfo object.", L"Injection - Error", MB_OK);
    32. return 1;
    33. }
    34. // Allow the runtime to load .NET 2.0 mixed-mode libraries. (This covers 2.0-3.5 SP1)
    35. hr = pRuntimeInfo->BindAsLegacyV2Runtime();
    36. if (FAILED(hr))
    37. {
    38. MessageBox(NULL, L"Could not bind as legacy v2 runtime.", L"Injection - Error", MB_OK);
    39. return 1;
    40. }
    41. hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&pClrHost);
    42. if (FAILED(hr))
    43. {
    44. MessageBox(NULL, L"Could not get an instance of ICLRRuntimeHost!", L"Injection - Error", MB_OK);
    45. return 1;
    46. }
    47. hr = pClrHost->Start();
    48. if (FAILED(hr))
    49. {
    50. MessageBox(NULL, L"Failed to start the CLR!", L"Injection - Error", MB_OK);
    51. return 1;
    52. }
    53. DWORD dwRet = 0;
    54. // Execute the Main func in the domain manager, this will block indefinitely.
    55. // (Hence why we're in our own thread!)
    56. hr = pClrHost->ExecuteInDefaultAppDomain(
    57. L"C:\\Test.dll", // Executable path
    58. L"Test.bc",
    59. L"InjectedMain",
    60. L"Hello World!",
    61. &dwRet);
    62. if (FAILED(hr))
    63. {
    64. MessageBox(NULL, L"Failed to execute in the default app domain!", L"Injection - Error", MB_OK);
    65. return 1;
    66. }
    67. }
    68. break;
    69. case DLL_THREAD_ATTACH: break;
    70. case DLL_THREAD_DETACH: break;
    71. case DLL_PROCESS_DETACH: break;
    72. }
    73. //FreeLibraryAndExitThread(hInstance, 0);
    74. return true;
    75. }


    Debug Ausgabe:

    Quellcode

    1. 1>------ Erstellen gestartet: Projekt: NetLoader, Konfiguration: Debug Win32 ------
    2. 1>Kompilieren...
    3. 1>NetLoader.cpp
    4. 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
    5. 1>Das Buildprotokoll wurde unter "file://c:\Users\***\Documents\Visual Studio 2008\Projects\NetLoader\NetLoader\Debug\BuildLog.htm" gespeichert.
    6. 1>NetLoader - 1 Fehler, 0 Warnung(en)
    7. ========== 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“ ()

    Um wissen zu können was falsch ist, musst du kein C++ können sondern vielmehr einfach nur lesen können.
    Viel interessanter wäre natürlich: Was hast du damit bitteschön vor? Wiedermal ein sinnloser und zum scheitern verurteilter Versuch einen Hack, Bot,... oder sonstige Scheiße zu Coden?


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.