紫水晶编程技术论坛 - 努力打造成全国最好的编程论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 11270|回复: 12

利用Fltmgr加载驱动

  [复制链接]

16

主题

97

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
611
发表于 2010-5-23 01:07:01 | 显示全部楼层 |阅读模式
//VC-ConsoleWithApi
#include<stdio.h>
#include<windows.h>
typedef struct _tagLOAD
{
   WORD Len;
   WCHAR ServiceName[512];
} LOAD , *PLOAD;
#define MAGIC_IOCTL 0x00088004

VOID WINAPI make_reg( LPWSTR szDriverName, LPWSTR szDriverPath )
{
   
   DWORD dwType = SERVICE_KERNEL_DRIVER;  
   DWORD dwStart = SERVICE_DEMAND_START;  
   HKEY hKey;
   WCHAR szMain[512] = {0};
   WCHAR szImgPath[512] = {0};
   wchar_t szRegPath[512]={0};
   
   wsprintfW( szMain,
      L"%s%s",
      L"SYSTEM\\CurrentControlSet\\Services\\",
      szDriverName );
   
   wsprintfW( szImgPath,
      L"%s%s",
      L"\\??\\",
      szDriverPath);
     
   if( RegCreateKeyW( HKEY_LOCAL_MACHINE, szMain, &hKey ) == ERROR_SUCCESS )
   {
      RegSetValueExW( hKey,
         L"DisplayName",
         0,
         REG_SZ,
         (LPBYTE)szDriverName,
         (DWORD)lstrlenW(szDriverName)*2);
      
      RegSetValueExW( hKey,
         L"ImagePath",
         0,
         REG_EXPAND_SZ,
         (LPBYTE)szImgPath,
         (DWORD)lstrlenW(szImgPath)*2);
      
      RegSetValueExW( hKey,
         L"Type",
         0,
         REG_DWORD,
         (LPBYTE)&dwType,
         (DWORD)sizeof(dwType) );
      
      RegSetValueExW( hKey,
         L"Start",
         0,
         REG_DWORD,
         (LPBYTE)&dwStart,
         (DWORD)sizeof(dwStart) );
      
   }   
}

int main( int argc , char *argv[] )
{
   HANDLE hDevice;
   LOAD service_to_load;
   BOOL err;
   DWORD dwRet=0;
   WCHAR drvPath[512];
   memset( drvPath , 0 , 512 );
   GetCurrentDirectoryW( MAX_PATH , drvPath );
   lstrcatW( drvPath , L"\\aaa.sys" );
   make_reg( L"aaa" , drvPath );
   hDevice = CreateFile ("[url=]\\\\.\\FltMgr[/url]" , GENERIC_READ | GENERIC_WRITE , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL );
   if( hDevice == INVALID_HANDLE_VALUE )
   {
      printf("CreateFile failed with status : %d\n" , GetLastError() );
      goto __end;
   }
   wcscpy( service_to_load.ServiceName , L"aaa");
   service_to_load.Len = wcslen( service_to_load.ServiceName )*sizeof(WCHAR);
   err = DeviceIoControl( hDevice , MAGIC_IOCTL , &service_to_load , sizeof(service_to_load) , NULL , 0 , &dwRet , NULL );
   if( !err )
   {
      printf("sorry\n");
      goto __end;
   }
   printf(":)\n");
__end:
   CloseHandle( hDevice );
   return 0;
}

16

主题

97

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
611
 楼主| 发表于 2010-5-23 01:07:28 | 显示全部楼层
不过,还是过不了360的驱动拦截

16

主题

97

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
611
 楼主| 发表于 2010-5-23 01:08:03 | 显示全部楼层
360貌似很变态,是驱动就拦,除非有正规公司的数字签名

280

主题

483

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
1808
发表于 2010-5-23 20:46:10 | 显示全部楼层
楼主大大能打个包下载吗?

16

主题

97

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
611
 楼主| 发表于 2010-5-24 22:16:32 | 显示全部楼层
代码打包,直接编译即可
LoadDrivetByFltmgr.rar (6.71 KB, 下载次数: 7270)

280

主题

483

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
1808
发表于 2010-5-25 00:09:06 | 显示全部楼层
楼主好人啊!

273

主题

3287

帖子

1

精华

管理员

嗷嗷叫的老马

Rank: 125Rank: 125Rank: 125Rank: 125Rank: 125

积分
17057

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-5-25 10:04:41 | 显示全部楼层
前段时间不是出了个使用正规数字签名的流氓软件还是病毒么........

折腾得很多杀软头疼.
我就是嗷嗷叫的老马了......

280

主题

483

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
1808
发表于 2010-5-25 22:05:33 | 显示全部楼层
汗死,VC2008编译出现如下错误:
LoadDrivetByFltmgr.obj : error LNK2019: 无法解析的外部符号 __imp__RegSetValueExW@24,该符号在函数 "void __stdcall make_reg(wchar_t *,wchar_t *)" (?make_reg@@YGXPA_W0@Z) 中被引用
LoadDrivetByFltmgr.obj : error LNK2019: 无法解析的外部符号 __imp__RegCreateKeyW@12,该符号在函数 "void __stdcall make_reg(wchar_t *,wchar_t *)" (?make_reg@@YGXPA_W0@Z) 中被引用
LoadDrivetByFltmgr.obj : error LNK2019: 无法解析的外部符号 __imp__wsprintfW,

9

主题

219

帖子

0

精华

初来乍到

Rank: 1

积分
904
发表于 2010-5-25 22:38:53 | 显示全部楼层
不过360,,就是有点杯具!

16

主题

97

帖子

0

精华

银牌会员

Rank: 3Rank: 3Rank: 3

积分
611
 楼主| 发表于 2010-5-29 09:55:07 | 显示全部楼层
360现在拦截时,注册服务拦截一次,加载驱动再拦一次,变态,注册服务可以用猥琐流绕过,但是加载驱动时,如果驱动没有数字签名,总是会拦
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|Archiver|紫水晶工作室 ( 粤ICP备05020336号 )

GMT+8, 2024-4-19 10:31 , Processed in 0.032076 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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