Ver Mensaje Individual
  #1  
Antiguo 08-12-2016
Mtrs.Dante Mtrs.Dante is offline
Registrado
NULL
 
Registrado: dic 2016
Posts: 2
Reputación: 0
Mtrs.Dante Va por buen camino
Conversión de C# a delphi

Hola amigos tengo un codigo en c# q quisiera pasar a delphi si alguien me pudiera ayudar le agradeceria

C#

Código:
    private Mutex mutex;
    private IntPtr thread;
    internal RunProc Window;

  private void threadi()
    {
      STARTUPINFO lpStartupInfo = new STARTUPINFO();
      PROCESS_INFORMATION lpProcessInformation = new PROCESS_INFORMATION();
      byte[] arrayToSearchThrough = File.ReadAllBytes(this.ExecutableName);
      byte[] input1 = new byte[4];
      Array.Copy((Array) arrayToSearchThrough, 60, (Array) input1, 0, 2);
      byte[] input2 = new byte[4];
      int num1 = RunProc.BytesToInt(input1);
      int sourceIndex1 = num1 + 296;
      int sourceIndex2 = num1 + 300;
      int sourceIndex3 = num1 + 304;
      int sourceIndex4 = num1 + 308;
      Array.Copy((Array) arrayToSearchThrough, sourceIndex3, (Array) input2, 0, 4);
      int num2 = RunProc.BytesToInt(input2);
      Array.Copy((Array) arrayToSearchThrough, sourceIndex4, (Array) input2, 0, 4);
      int num3 = RunProc.BytesToInt(input2);
      Array.Copy((Array) arrayToSearchThrough, sourceIndex2, (Array) input2, 0, 4);
      int num4 = RunProc.BytesToInt(input2) + 4194304;
      Array.Copy((Array) arrayToSearchThrough, sourceIndex1, (Array) input2, 0, 4);
      int num5 = RunProc.Round1000(RunProc.BytesToInt(input2));
      int num6 = RunProc.IndexOf(arrayToSearchThrough, Encoding.ASCII.GetBytes("steam_api.dll"));
      if (num6 < num3 && num6 > num3 + num2)
      {
        int num7 = (int) MessageBox.Show("Cannot find steam_api.dll string in executable, make sure you have the proper original files!");
      }
      else
      {
        int num8 = num6 - num3;
        if (!Win32Apis.CreateProcess(this.ExecutableName, this.Commandargs, IntPtr.Zero, IntPtr.Zero, false, 516U, IntPtr.Zero, (string) null, ref lpStartupInfo, out lpProcessInformation))
        {
          int num9 = (int) MessageBox.Show("Cannot create process!");
        }
        else
        {
          this.thread = lpProcessInformation.hThread;
          uint lpflOldProtect1;
          Win32Apis.VirtualProtectEx(lpProcessInformation.hProcess, new IntPtr(num4), new UIntPtr((uint) num5), 64U, out lpflOldProtect1);
          UIntPtr lpNumberOfBytesWritten;
          Win32Apis.WriteProcessMemory(lpProcessInformation.hProcess, new IntPtr(num4 + num8), Encoding.ASCII.GetBytes("teknomw3.dll"), 13U, out lpNumberOfBytesWritten);
          uint lpflOldProtect2;
          Win32Apis.VirtualProtectEx(lpProcessInformation.hProcess, new IntPtr(num4), new UIntPtr((uint) num5), lpflOldProtect1, out lpflOldProtect2);
          if (lpNumberOfBytesWritten == (UIntPtr) 0U)
          {
            int num10 = (int) MessageBox.Show("Cannot write to process memory!");
            Win32Apis.TerminateProcess(lpProcessInformation.hProcess, 0U);
            Win32Apis.TerminateThread(lpProcessInformation.hThread, 0U);
          }
          else
          {
            this.mutex = new Mutex(false, "TeknoMW3" + (lpProcessInformation.dwProcessId ^ 87U).ToString("X8"));
            int num10 = (int) Win32Apis.ResumeThread(lpProcessInformation.hThread);
          }
        }
      }
    }

Última edición por dec fecha: 09-12-2016 a las 10:41:13. Razón: Poner etiqueta CODE
Responder Con Cita