應用程序附加動態鏈接庫

應用程序附加動態鏈接庫


如需轉載請標明出處:http://blog.csdn.net/itas109
QQ技術交流羣:129518033

相關問題:
1.修改應用程序的導入表
2.dll注入
3.無源碼修改程序功能
4.應用程序永久注入dll

相關博文:
Windows核心編程 - API HOOK應用

環境:
OS : windows 7
編譯器: vs2013

1.編寫應用程序

示例程序爲輸出當前時間

// main.cpp
#include <iostream>
#include <windows.h>

int main()
{
	SYSTEMTIME t;

	GetSystemTime(&t);

	printf("time : %04d-%02d-%02d %02d:%02d:%02d\n",t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond);

    system("pause");

	return 0;
}

在這裏插入圖片描述

2.編寫dll動態鏈接庫

示例代碼爲將GetSystemTime的時間固定返回2020-01-01 00:00:00

AdHookApi參考 Windows核心編程 - API HOOK應用
或者 windows api SetWindowsHookEx

注意:這裏永久注入會影響整個程序的GetSystemTime,如果有源碼可以在需要的位置通過LoadLibrary和FreeLibrary進行精準處理

// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "stdafx.h"

#include "AdHookApi.h"

static CAdHookApi     gHooks;

void WINAPI my_GetSystemTime(LPSYSTEMTIME lpSystemTime)
{
	// 改變函數的行爲,返回固定的時間
	// 2020-01-01 00:00:00
	lpSystemTime->wYear = 2020;
	lpSystemTime->wMonth = 1;
	lpSystemTime->wDayOfWeek = 0;
	lpSystemTime->wDay = 1;
	lpSystemTime->wHour = 0;
	lpSystemTime->wMinute = 0;
	lpSystemTime->wSecond = 0;
	lpSystemTime->wMilliseconds = 0;
}

BOOL APIENTRY DllMain(HMODULE hModule,
	DWORD  ul_reason_for_call,
	LPVOID lpReserved
	)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	{
							   MessageBox(0, "GetSystemTime劫持注入成功", "hello", 0);
							   // 截獲KERNEL32.DLL的API GetSystemTime到你的函數地址my_GetSystemTime
							   gHooks.Add(_T("KERNEL32.DLL"), "GetSystemTime", my_GetSystemTime);
							   gHooks.BeginAll();
							   break;
	}
	case DLL_THREAD_ATTACH:
	{
							  break;
	}
	case DLL_THREAD_DETACH:
	{
							  break;
	}
	case DLL_PROCESS_DETACH:
	{
							   gHooks.EndAll();
							   break;
	}
	}
	return TRUE;
}

_declspec(dllexport) void empty()
{
	//空函數,爲了導入表可以選擇api
}

3.StudyPE+修改應用程序的導入表

dll添加到導入表後,應用程序每次啓動會自動加附加的dll,同時執行dll中DllMain的代碼。

注意:也可以先啓動應用程序,通過CreateRemoreThread進行線程注入
在這裏插入圖片描述

4.結果

在這裏插入圖片描述
在這裏插入圖片描述


License

License under CC BY-NC-ND 4.0: 署名-非商業使用-禁止演繹

如需轉載請標明出處:http://blog.csdn.net/itas109
QQ技術交流羣:129518033


Reference:
Windows核心編程 - API HOOK應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章