吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1719|回复: 1
收起左侧

[求助] C# 如何防止远程线程注入

  [复制链接]
yecc 发表于 2021-10-18 18:19
论坛中,远程线程注入的案例比较多,但是如何防止线程注入的帖子基本没有。想请问个大佬,如何才能防止线程注入。
从网上搜索后汇总的情况如下
思路一:当进程被远程线程注入时(或进程本身创建线程时),会发送DLL_THREAD_ATTACH消息到所有的关联DLL中。有个解决方案是,用一个dll专门判断线程创建源,如进程创建线程前,设置个变量A=1,当在创建线程时,dll的dllmain方法判断A==1判断为进程自己创建的线程。
代码案例如下:参考 https://blog.csdn.net/u011740322/article/details/10083563

[C++] 纯文本查看 复制代码
// 创建线程之前设置nFlag为1,表示需要创建一个合法的线程
// 只有合法线程才能正常创建
int nFlag = 0;
 
// 设置线程创建标识
VOID  SetFlag ( int Flag )
{
nFlag = Flag;
}
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
// 检测线程创建标识
if ( nFlag == 1)
{
// 如果线程创建标识为FALSE,就直接结束线程
TerminateThread (GetCurrentThread(),0 ) ;
}
else
{
// 每次创建合法线程后,将nFlag标识置为0
// 每次设置合法线程标识只能使用一次
SetFlag ( 0 ) ;
}
....
}
return TRUE;
}

有个问题我的wpf项目页面的隐形线程太多,如何才能在进程创建每个线程启动前都默认设置这个值呢
思路二:
追溯创建的线程是否来自于LoadLibraryA  or LoadLibraryW
参考资料:https://www.52pojie.cn/forum.php ... F%B3%CC%D7%A2%C8%EB

主要问题,我的C#项目怎么才能让上述C++写的dll接收到 DLL_THREAD_ATTACH

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| yecc 发表于 2021-10-20 17:48
用了第二种方法,终止线程  导致软件卡死了 怎么办
TerminateThread(OpenThread(THREAD_ALL_ACCESS, true, te32->th32ThreadID), 0);
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表