久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
獨占式強鎖文件 - K掉易游強制鎖定廣告主頁
[打印本頁]
作者:
liuyuxi
時間:
2015-1-10 23:08
標題:
獨占式強鎖文件 - K掉易游強制鎖定廣告主頁
今天幫我的朋友設計了一個小程序。是解決易游強制鎖定IE的廣告主頁。他是幾家連鎖的中型網吧技術負責人,所以通過推廣廣告主頁賺點外快。。。嘿嘿。。。
根據他解釋,無論怎么設置主頁,打開IE瀏覽器后總會被強制跳轉到易游自己的百度推廣主頁,所以很奸詐。他仔細研究了下,這次易游是在C:\windows\system32\ 目錄下 隨機尋找一個文件夾,然后再在那個文件夾里面建立一個隨機命名的文件夾,在這個隨機命名的文件夾中生成兩個隨機命名的DLL和一個固定名字EyooSecSet.dll的DLL文件。他給出的思路是以EyooSecSet.dll為突破點,遍歷System32文件下所有文件,找到這個EyooSecSet.dll就表示找到該文件夾,然后設置拒絕控制的權限,使那這些DLL文件無法被加載到IE瀏覽器中。據我粗略觀察,其中起作用的是兩個隨機命名DLL文件中的其中一個被注入到IE里面(可能不是注入而是利用了消息鉤子)。這次他找出問題所在并且也有思路,所以這次從設計到成品時間很短。由于在VC中設置文件夾權限比較復雜點,所以想起當年自己設計木馬的時候防止360上傳時利用CreateFile獨占方式打開文件,讓360無法讀取文件。這招在當時,360還無法粉碎呢,嘎嘎。。。 覺得反正能達到目的那就從簡開始。給出代碼。方便以后自己復習用。
我自己的設計思路是利用殺毒軟件的特征碼技術來確定那是三個DLL,因為DLL的名字或許會變更。后來想想,一般都不會變吧。。到時候變了再說。。。
[color=#060df9,strength=3);COLOR:white;text-shadow:1px]
(
[color=#060df9,strength=3);COLOR:white;text-shadow:1px]
以前設計的程序沒有給出源碼的都會陸續給出。)
==================================================================================
///************************************************************************/
/* 設計者:【L、】QQ:1007566569 */
/************************************************************************/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
// 遍歷文件代碼
int viewfiles(char *directory);
// 鎖定文件
BOOL OccupyFile( LPCTSTR lpFileName );
BOOL EXIT = TRUE;
// 提升權限
void RaiseToDebugP()
{
HANDLE hToken;
HANDLE hProcess = GetCurrentProcess();
if ( OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
{
TOKEN_PRIVILEGES tkp;
if ( LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid) )
{
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
BOOL bREt = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0) ;
}
CloseHandle(hToken);
}
}
// 這個函數是為了把文件句柄復制到 System 進程 這樣本程序即使退出 被鎖定的文件也不會失效
BOOL OccupyFile( LPCTSTR lpFileName )
{
BOOL bRet;
RaiseToDebugP();
// 打開System進程
HANDLE hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 4); // 4為system進程號
if ( hProcess == NULL )
{
hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 8);
if ( hProcess == NULL )
return FALSE;
}
HANDLE hFile;
HANDLE hTargetHandle;
// 獨占方式打開文件 網上的不是打開
hFile =CreateFile(lpFileName,GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS,0);
if ( hFile == INVALID_HANDLE_VALUE )
{
CloseHandle( hProcess );
return FALSE;
}
// 禁止內核關閉該句柄 一般情況下如果在內核關閉該句柄會藍屏
SetHandleInformation(hFile,HANDLE_FLAG_PROTECT_FROM_CLOSE,HANDLE_FLAG_PROTECT_FROM_CLOSE);
// 這步是關鍵 從當前進程復制文件句柄到System進程空間 這樣本程序即使退出 但是句柄在System進程內仍有效
bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle,
0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE);
CloseHandle( hProcess );
return bRet;
}
// 找到該文件夾后 遍歷所有文件 并且鎖定
DWORD WINAPI viewfilesLock( LPVOID lpParam )
{
char directory[MAX_PATH] = {0};
strcpy(directory, (char*)lpParam);
WIN32_FIND_DATA fdFindData;
HANDLE hFind;
char *filename;
int count=0;
BOOL done;
filename=new char[strlen(directory)+5];
strcpy(filename,directory);
strcat(filename,"\\*.*");
// 這里都是普通的便利文件代碼。。。
hFind=FindFirstFile(filename,&fdFindData);
delete[] filename;
done=hFind!=INVALID_HANDLE_VALUE;
while(done)
{
if(strcmp(fdFindData.cFileName,".") && strcmp(fdFindData.cFileName,".."))
{
filename=new char[strlen(directory)+strlen(fdFindData.cFileName)+2];
strcpy(filename,directory);
strcat(filename,"\\");
strcat(filename,fdFindData.cFileName);
if((fdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY )
{
viewfiles(filename);
}
else
{
// 凡是文件 都將被鎖定
printf("文件路徑:%s\n",filename);
OccupyFile(filename);
}
delete[] filename;
}
done=FindNextFile(hFind,&fdFindData);
}
FindClose(hFind);
EXIT = FALSE; // 標記可以退出
return(count);
}
// 遍歷指定文件夾
int viewfiles(char *directory)
{
WIN32_FIND_DATA fdFindData;
HANDLE hFind;
char *filename;
int count=0;
BOOL done;
filename=new char[strlen(directory)+5];
strcpy(filename,directory);
strcat(filename,"\\*.*");
hFind=FindFirstFile(filename,&fdFindData);
delete[] filename;
done=hFind!=INVALID_HANDLE_VALUE;
while(done)
{
if(strcmp(fdFindData.cFileName,".") && strcmp(fdFindData.cFileName,".."))
{
filename=new char[strlen(directory)+strlen(fdFindData.cFileName)+2];
strcpy(filename,directory);
strcat(filename,"\\");
strcat(filename,fdFindData.cFileName);
if((fdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY )
{
viewfiles(filename);
}// 如果文件名為 EyooSecSet.dll 這步之所以用 strstr是為了省時間。不想重新處理文件路徑。正確的應該先處理文件路徑獲取文件名再比較
else if (strstr(filename, "EyooSecSet.dll"))
{
char DllFile[MAX_PATH] = {0};
strcpy(DllFile, filename);
*strrchr(DllFile, '\\') = '\0';
// 創建線程去鎖定包含了 EyooSecSet.dll 文件的文件夾下所有文件
CreateThread(NULL, NULL, viewfilesLock, (LPVOID)DllFile, NULL, NULL);
Sleep(500); // 保證線程參數傳遞完畢
}
delete[] filename;
}
done=FindNextFile(hFind,&fdFindData);
}
FindClose(hFind);
return(count);
}
void Scan()
{
while(EXIT)
{
viewfiles("C:\\windows\\system32");
Sleep(1000);
}
exit(1); // 如果找到了這些文件 就退出
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// 運行時 去除鼠標指針漏斗
GetInputState();
PostThreadMessage(GetCurrentThreadId(), NULL, NULL, NULL);
MSG msg;
GetMessage(&msg, NULL, NULL, NULL);
printf("用于解決易游鎖定IE廣告主頁 2013.3.29 【L、】1007566569");
CreateThread(NULL, NULL,(LPTHREAD_START_ROUTINE)Scan, NULL, NULL, NULL);
Sleep(120000); // 如果 兩分鐘后還沒有找到文件 那么就退出
return 0;
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
毛片a级毛片免费播放100
|
日韩欧美字幕
|
日韩国产一区二区三区
|
91欧美精品成人综合在线观看
|
亚洲国产成人在线视频
|
男人天堂国产
|
欧美精品在欧美一区二区
|
国产精品爱久久久久久久
|
色眯眯视频在线观看
|
欧美成人精品在线观看
|
亚洲成人免费
|
国产 日韩 欧美 中文 在线播放
|
亚洲福利一区
|
3p视频在线观看
|
亚洲一区二区三区久久久
|
麻豆av免费观看
|
欧美在线一区二区三区
|
国产久
|
综合久久av
|
亚洲精品欧美
|
国产精品一区二区不卡
|
噜啊噜在线
|
亚洲九色
|
亚洲视频在线免费观看
|
在线播放国产视频
|
伊人精品在线
|
国产激情第一页
|
天堂久久天堂综合色
|
日本久久网
|
欧美1区2区
|
视频在线日韩
|
精品一区二区三区免费视频
|
中文字幕在线精品
|
色视频在线观看
|
精品国产一区二区三区性色av
|
久久成人av
|
欧美a级成人淫片免费看
|
国产伦精品一区二区三区在线
|
国产精品久久久乱弄
|
国产乱肥老妇国产一区二
|
亚洲精品在线看
|