Serie de programación de piratería de Windows (5): inicio automático agregando un directorio de inicio rápido

Tecnología de arranque automático

Para un troyano de virus, lo importante no es cómo destruirlo, sino también cómo ejecutarlo. Un troyano de virus solo puede manifestar verdaderamente su poder destructivo cuando se carga en la memoria y comienza a ejecutarse. De lo contrario, es solo un archivo de disco ordinario, y la privacidad no representa una ligera amenaza para los datos de los usuarios de computadoras.

La tecnología de arranque automático incluye principalmente cuatro tipos:

  • Registro
  • Directorio de inicio rápido
  • Tarea programada
  • Servicio del sistema

Este artículo presenta principalmente el directorio de inicio rápido

Directorio de inicio rápido

El directorio de inicio rápido es un método simple y de inicio automático que no necesita modificar ningún dato del sistema y es el más sencillo de implementar.

Mientras el programa se coloque en la carpeta de inicio rápido, el sistema cargará y ejecutará automáticamente el programa correspondiente cuando se inicie, para lograr la función de autoarranque en el arranque.

El directorio de inicio rápido no es un directorio fijo. El directorio de inicio rápido de cada computadora es diferente, pero el programa puede obtener este directorio a través de la API de WINDOWS.

Introducción a WINAPI

SHGetSpecialFolderPath

Prototipo de función

BOOL SHGetSpecialFolderPath(
HWND hwndOwner,
LPTSTR lpszPath,
int nFolder,
BOOL fCreate)

Explicación de parámetros

  • hwndOwner: identificador del propietario de la ventana
  • lpszPath: buffer de ruta de retorno, el tamaño es MAX_PATH
  • nFolder: identificador CSIDL de la ruta del sistema
  • fCreate: indica si se debe crear una carpeta cuando no existe, FALSE no es crear.

Valor de retorno

  • Ejecución exitosa, devuelve VERDADERO
  • De lo contrario, devuelva FALSO
wsprintf

Prototipo de función

int __cdecl wsprintf(
_Out_ LPTSTR lpOut,
_In_ LPCTSTR lpFmt,
_In_...);

Descripción del parámetro

  • lpOut: recibe salida con formato de búfer. El tamaño máximo del búfer es de 1.024 bytes
  • lpFmt: controla el formato de la salida, similar al primer parámetro de printf
  • Parámetros variables
Copiar archivo

Prototipo de función

BOOL CopyFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
BOOL bFailIfExists );

Descripción del parámetro

  • lpExistingFileName: nombre del archivo fuente
  • lpNewFileName: nombre del archivo de destino
  • bFailIfExists: si es VERDADERO, una vez que el archivo de destino existe, la ejecución falla, si es FALSO, el archivo se reescribirá

Valor de retorno

  • VERDADERO para una ejecución exitosa
  • De lo contrario FALSO

Implementación de codificación

Coloque el programa de la calculadora en el directorio de inicio rápido, la idea básica es la siguiente:

  • Obtenga el directorio de inicio rápido del sistema
  • Construya la ruta del directorio de inicio rápido + exe
  • Copie el archivo PE en el directorio de inicio rápido
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <windows.h>
#include <stdio.h>
#include "resource.h"
#include "ConsoleApplication1.h"
#include <tchar.h>
#include <cstring>
#include <shlobj.h>

BOOL Auto_Run(LPCWSTR srcFilename, LPCWSTR destFilename)
{
	wchar_t pszExePath[MAX_PATH] = { 0 };
	wchar_t dest_update[MAX_PATH] = { 0 };
	BOOL bRet = FALSE;
	bRet = SHGetSpecialFolderPath(NULL, pszExePath, CSIDL_STARTUP, FALSE);
	if (bRet == FALSE)
	{
		printf("file path error!\n");
		return FALSE;
	}
	printf("%ws\n", pszExePath);
	wsprintf(dest_update, L"%ws\\%ws", pszExePath, destFilename);
	printf("%ws\n", dest_update);
	printf("%ws\n", srcFilename);
	if (CopyFile(srcFilename, dest_update, FALSE) == FALSE)
	{
		printf("copy error!\n");
		return FALSE;
	}
	return TRUE;
}

int main()
{
	
	LPCWSTR srcFilename = L"C:\\Windows\\System32\\calc.exe";
	LPCWSTR destFilename = L"calc.exe";
	BOOL flag = Auto_Run(srcFilename, destFilename);
	if (flag == TRUE)
	{
		printf("success\n");
	}

	return 0;
}

Tabla de efecto de ejecución

Tinder informó directamente sobre el veneno, tratando de cambiar las opciones de inicio

Después de hacer clic en Permitir, puede encontrar el programa de la calculadora en este directorio.

发布了301 篇原创文章 · 获赞 170 · 访问量 30万+

Supongo que te gusta

Origin blog.csdn.net/AcSuccess/article/details/105595651
Recomendado
Clasificación