前言

​ 上篇没有讲拿破轮胎大佬工具的原理,同时工具生成的DLL目前不是免杀的。所以这里讲一下工具的原理。实际上,注入工具会将输入的shellcode进行一个处理,然后将他写入到和conf.inf文件中,然后wwwcomw.dll可以看成一个shellcode加载器,这里就是分离免杀的原理。工具还帮我完成了修改输入表的步骤。然后我们只需要把wwwcomw.dllconf.inf放置到exe运行目录即可。

输入表注入原理

​ 当Exe被加载时,系统会根据Exe输入表信息来加载需要用到的DLL,输入表注入的原理就是修改exe输入表,将自己的DLL添加到exe的导入表中,这样exe运行时可以将自己的DLL加载到exe的进程空间。

输入表注入

DLL实例源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <windows.h>
#include <iostream>
HANDLE My_hThread = NULL;

DWORD WINAPI ceshi(LPVOID pParameter)

{
MessageBox(NULL, L"Zero Team", L"Zero team", MB_OK);
return 0;

}

BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
My_hThread = ::CreateThread(NULL, 0, &ceshi, 0, 0, 0);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


extern"C" _declspec(dllexport) void test()
{
int a;
a = 0;
}

编译如上代码,得到dll文件。

使用LordPe查看输出表,可以看到我们写的test函数。

1591938826964

使用Stud_PE添加输入表,导入exe查看函数。

1591939030535

添加新的输入表,选择DLL,选择函数,加入清单。

1591939139072

将DLL放置到exe运行目录,运行exe。

1591939196925

结语

​ 对于该技术的研究仅限于在渗透测试或者钓鱼中的使用,所以没有太多的逆向原理知识部分。关于其他逆向原理知识和DLL处理方面,有兴趣的可以自己研究~