Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 20 Junio 2020, 02:41 am



Título: ¿CMD, PowerShell, Python es capaz de leer un archivo.dll de C++ nativo?
Publicado por: Meta en 20 Junio 2020, 02:41 am
Buenos días compañeros.

No tengo idea de PowerShell. He creado una dll con Visual C++ nativo y a 64 bits. Hice un ejemplo con una interfaz de consola C# y me lee la dll de C++ nativo.

Dejo un ejemplo.

Código
  1. Código C#:
  2.  
  3. using System;
  4. using System.Runtime.InteropServices; // No olvidar.
  5.  
  6. namespace Consola_cs
  7. {
  8.    class Program
  9.    {
  10.        // Importar dll.
  11.        [DllImport("MyDLL.dll")]
  12.        extern static public int Suma(int a, int b);
  13.        [DllImport("MyDLL.dll")]
  14.        extern static public IntPtr Mensaje();
  15.  
  16.        static void Main()
  17.        {
  18.            // Título de la ventana.
  19.            Console.Title = "Consola C# 2019";
  20.  
  21.            // Tamaño de la ventana.
  22.            Console.SetWindowSize(40, 5);
  23.  
  24.            // Color de las letras.
  25.            Console.ForegroundColor = ConsoleColor.Green;
  26.  
  27.            // Llamando a la dll para mostrar un mensaje y una suma.
  28.            Console.WriteLine(Marshal.PtrToStringAuto(Mensaje()));
  29.            Console.WriteLine(Suma(1764, -764).ToString());
  30.  
  31.            // Pulse cualquier tecla para salir.
  32.            Console.ReadKey();
  33.        }
  34.    }
  35. }
  36.  

DLL hecho con C++:

Código
  1. // dllmain.cpp : Define el punto de entrada de la aplicación DLL.
  2. #include "pch.h"
  3.  
  4. BOOL APIENTRY DllMain( HMODULE hModule,
  5.                       DWORD  ul_reason_for_call,
  6.                       LPVOID lpReserved
  7.                     )
  8. {
  9.    switch (ul_reason_for_call)
  10.    {
  11.    case DLL_PROCESS_ATTACH:
  12.    case DLL_THREAD_ATTACH:
  13.    case DLL_THREAD_DETACH:
  14.    case DLL_PROCESS_DETACH:
  15.        break;
  16.    }
  17.    return TRUE;
  18. }
  19.  
  20. extern "C"
  21. {
  22.    __declspec(dllexport)  int WINAPI Suma(int, int);
  23.    __declspec(dllexport) LPTSTR WINAPI Mensaje();
  24. };
  25.  
  26. // Suma.
  27. int WINAPI Suma(int a, int b) { return a + b; }
  28.  
  29. // Mensaje.
  30. LPTSTR WINAPI Mensaje() { return LPTSTR(L"Hola. Soy una dll de C++ nativo."); }


El archivo dll que he creado se llama MyDLL.dll y quiero saber si PowerShell es capaz de leer las dll y que funciona. Esta dll solo hace una suma y muestra un mensaje en pantalla.

¿Es posible que PowerShell sea capaz de leer una dll?

Si es cierto. ¿Cómo se hace?

Un cordial saludos.