Windowsハッキングプログラミングシリーズ(5):クイックスタートディレクトリを追加することによる自動起動

自己始動テクノロジー

ウイルス型トロイの木馬にとって重要なことは、それをどのように破壊するかではなく、どのように実行するかです。ウイルスのトロイの木馬は、メモリにロードされて実行を開始したときにのみ、その破壊力を本当に発揮できます。それ以外の場合、それは単なる通常のディスクファイルであり、プライバシーがコンピュータユーザーのデータにわずかな脅威をもたらすことはありません。

自動起動テクノロジーには、主に4つのタイプがあります。

  • レジストリ
  • クイックスタートディレクトリ
  • スケジュールされたタスク
  • システムサービス

この記事では主にクイックスタートディレクトリを紹介します

クイックスタートディレクトリ

クイックスタートディレクトリは、システムデータを変更する必要がなく、実装が最も簡単な、シンプルで自己起動的な方法です。

プログラムがクイックスタートフォルダに配置されている限り、システムは起動時に対応するプログラムを自動的にロードして実行し、ブート時に自動起動する機能を実現します。

クイックスタートディレクトリは固定ディレクトリではなく、各コンピュータのクイックスタートディレクトリは異なりますが、プログラムはWINDOWS APIを介してこのディレクトリを取得できます。

WINAPIの概要

SHGetSpecialFolderPath

関数プロトタイプ

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

パラメータの説明

  • hwndOwner:ウィンドウ所有者のハンドル
  • lpszPath:パスバッファーを返します。サイズはMAX_PATHです。
  • nFolder:システムパスのCSIDL識別子
  • fCreate:フォルダーが存在しない場合に作成するかどうかを示します。FALSEは作成しません。

戻り値

  • 実行に成功し、TRUEを返します
  • それ以外の場合はFALSEを返します
wsprintf

関数プロトタイプ

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

パラメータの説明

  • lpOut:受信バッファ形式の出力。最大バッファサイズは1,024バイトです。
  • lpFmt:printfの最初のパラメーターと同様に、出力の形式を制御します
  • 可変パラメーター
CopyFile

関数プロトタイプ

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

パラメータの説明

  • lpExistingFileName:ソースファイル名
  • lpNewFileName:ターゲットファイル名
  • bFailIfExists:TRUEの場合、ターゲットファイルが存在すると実行は失敗します。FALSEの場合、ファイルは再書き込みされます

戻り値

  • 実行が成功した場合はTRUE
  • それ以外の場合はFALSE

エンコーディングの実装

電卓プログラムをクイックスタートディレクトリに置きます。基本的な考え方は次のとおりです。

  • システムのクイックスタートディレクトリを取得する
  • クイックスタートディレクトリ+ exeのパスを作成します
  • PEファイルをクイックスタートディレクトリにコピーします。
// 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;
}

ランニング効果チャート

Tinderが毒を直接報告し、起動オプションを変更しようとしています

[許可]をクリックすると、このディレクトリに電卓プログラムが見つかります。

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

おすすめ

転載: blog.csdn.net/AcSuccess/article/details/105595651