注册表与木马(一)——注册表读写

 木马是什么?

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

    服务端程序开启远程后门

    客户端使用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 }

运行结果:

 

 

 

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

posted @ 2017-12-07 16:23  AntzUhl  阅读(1488)  评论(1编辑  收藏  举报