zoukankan      html  css  js  c++  java
  • 注册表与木马(一)——注册表读写

     木马是什么?

        木马(网络程序) = 客户端程序(控制端) + 服务端(被控端)

        服务端程序开启远程后门

        客户端使用Telnet进行远程控制

        服务端程序需要在每次电脑开机时运行,这就需要在注册表中添加开机启动

       注册表:

                   木马的自启动,在Windows启动时,自动加载。

          注册表编辑器 :  RegEdit (一个有关Windows的巨大的数据库)

             

        

          

        有关注册表关于开机启动的键值可以自行百度。(除了最基础的3种,其实expleror.exe这个进程所在的键值也是病毒木马经常用来实现自启动的位置)

        

      接下来是Windows关于注册表读写的方法

          注册表内部结构:

              Key -> subkey -> value -> 名称,类型,数据

          读写函数:

             RegCreateKey()           |      RegCreateKeyEx()

             RegOpenKey()    |   RegOpenKeyEx()

             RegQueryValue()   |   RegQueryValueEx()

             RegDeleteKey()     |    RegDeleteKeyEx()

             RegCloseKey()      |

                                                     (分为新旧两种)

       

       读取实例  读取CPU信息 :

     1 #include<stdio.h>
     2 #include<windows.h>
     3 #include<iostream>
     4 #include <tchar.h>
     5 using namespace std ;
     6 
     7 int main(){
     8     HKEY hkey ;
     9     TCHAR p[64] ;
    10     long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("HARDWARE\DESCRIPTION\System\CentralProcessor\0"),0,KEY_QUERY_VALUE,&hkey) ;
    11     if(ret==ERROR_SUCCESS){
    12         // 打开成功
    13         cout << "Open  !" << endl ;
    14         DWORD size = sizeof(p) ;
    15         ret = RegQueryValueEx(hkey,_T("ProcessorNameString"),NULL,NULL,(LPBYTE)p,&size);
    16         if(ret==ERROR_SUCCESS){
    17             // 读取成功
    18             cout << "Read  !" << endl ;
    19             cout << p << endl;
    20         }else {
    21             cout << "Read error !" << endl ;
    22         }
    23     }else {
    24         cout << "Open error !" << endl ;
    25     }
    26     return 0 ;
    27 }

      运行结果:

     

        

      写入实例  :

      接上CPU信息读取方法,在同一 subkey 下写入键值 hello :  helloRegedit 

      代码如下:

     1 #include<stdio.h>
     2 #include<windows.h>
     3 #include<iostream>
     4 #include <tchar.h>
     5 using namespace std ;
     6 
     7 int main(){
     8     HKEY hkey ;
     9     TCHAR p[64] ;
    10     long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("HARDWARE\DESCRIPTION\System\CentralProcessor\0"),0,KEY_QUERY_VALUE,&hkey) ;
    11     if(ret==ERROR_SUCCESS){
    12         // 打开成功
    13         cout << "Open  !" << endl ;
    14         DWORD size = sizeof(p) ;
    15         ret = RegQueryValueEx(hkey,_T("ProcessorNameString"),NULL,NULL,(LPBYTE)p,&size);
    16         if(ret==ERROR_SUCCESS){
    17             // 读取成功
    18             cout << "Read  !" << endl ;
    19             cout << p << endl;
    20             ret = RegCreateKey(HKEY_LOCAL_MACHINE,_T("HARDWARE\DESCRIPTION\System\CentralProcessor\0"),&hkey);
    21             if(ret==ERROR_SUCCESS){
    22                 ret = RegSetValueEx(hkey,_T("hello"),0,REG_SZ,(const BYTE*)("helloRegedit"),12);
    23                 if(ret==ERROR_SUCCESS){
    24                     // 写入成功
    25                     cout << "Write Ok !"
    26                 }else {
    27                     // 写入失败
    28                     cout << "Write filed !"
    29                 }
    30             }
    31         }else {
    32             cout << "Read error !" << endl ;
    33         }
    34     }else {
    35         cout << "Open error !" << endl ;
    36     }
    37     return 0 ;
    38 }

    运行结果:

     

     可以发现已经写入了注册表中,利用注册表的读写,可以使木马的自启动,隐藏用户等操作很容易实现

  • 相关阅读:
    javascript对象Math和正则对象
    javascript的Date对象
    初识Python与条件判断
    数据降维_矩阵分析笔记
    数据可视化实战:如何给陈奕迅的歌曲做词云展示?
    数据采集实战:如何自动化运营微博?
    MySQL与Python交互
    27_MySQL数字函数(重点)
    26_ mysql数据操作语言:DELETE语句
    25_MySQL 数据操作语言:UPDATE语句
  • 原文地址:https://www.cnblogs.com/LexMoon/p/C_muma.html
Copyright © 2011-2022 走看看