欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

聊天軟件利用Windows系統(tǒng)API函數(shù)SetWindowDisplayAffinity不讓截圖?我偏要!破解它!

admin
2024年9月17日 12:28 本文熱度 653

前幾天,有小伙伴反映:他手里有個(gè)聊天軟件,每次一截圖,聊天窗口就不見了,甚至按鍵盤上的PrtSc截圖鍵截下來都沒有這個(gè)聊天窗口的內(nèi)容,他想盡各種辦法,就是截不了這個(gè)軟件的圖。

聽他這么一描述,我還有些好奇了起來。首先懷疑的是這軟件是不是安裝了什么消息鉤子,通過監(jiān)聽鍵盤按鍵,禁止截圖,于是有人建議他換個(gè)快捷鍵,結(jié)果發(fā)現(xiàn)也不行:

于是我建議讓他手動(dòng)點(diǎn)擊微信的截圖按鈕,不要敲鍵盤,結(jié)果還是不行:

有群友建議他使用錄屏功能,直接錄視頻,發(fā)現(xiàn)居然仍然不行!

這一下挑起了我的興趣,這軟件還真有兩下子啊。

基于這么多操作都不行,于是我懷疑是不是這軟件安裝了什么內(nèi)核驅(qū)動(dòng),在內(nèi)核里面攔截捕捉屏幕像素內(nèi)容的操作,于是建議用PChunter查一下:

鑒于這位小伙伴不是太會(huì)操作,于是我找他要到了這個(gè)聊天軟件的安裝包,自己安裝了來研究。結(jié)果發(fā)現(xiàn)居然啥驅(qū)動(dòng)都沒裝!也沒有什么可疑的鉤子行為。甚至連軟件的登錄界面都截不了圖!

這一下讓我皺眉頭了,一個(gè)普通應(yīng)用程序,它是咋做到這一切的?難道是有什么我不知道的操作?【本文來自微信公眾號(hào):軒轅的編程宇宙,未經(jīng)許可,禁止搬運(yùn)

于是我打開ChatGPT,把上面的現(xiàn)象給它描述了一下,他告訴了我一個(gè)系統(tǒng)API,這個(gè)API可以辦到這樣的效果,這個(gè)API就是:SetWindowDisplayAffinity

根據(jù)MSDN的描述,這個(gè)函數(shù)可以用來設(shè)置窗口不被任何屏幕錄制行為捕獲:

為了驗(yàn)證這聊天軟件是不是通過這個(gè)API實(shí)現(xiàn)的,我用APImonitor抓了一下它啟動(dòng)的過程,果然發(fā)現(xiàn)了對(duì)這個(gè)函數(shù)的調(diào)用,而且第二個(gè)參數(shù)傳遞的值正是上面的0x11,也就是17。

問題搞清楚了,想要破解就好辦了,再調(diào)用一下這個(gè)函數(shù),把第二個(gè)參數(shù)設(shè)置為0,解除對(duì)窗口的保護(hù)就好了。

不過要注意,根據(jù)MSDN的描述,調(diào)用這個(gè)函數(shù)必須要窗口屬于當(dāng)前進(jìn)程才行,無(wú)法操作別的進(jìn)程的窗口。所以我們得讓那個(gè)聊天軟件自己去調(diào)用這個(gè)函數(shù)解除它的窗口保護(hù)。【本文來自微信公眾號(hào):軒轅的編程宇宙,未經(jīng)許可,禁止搬運(yùn)】

那如何讓聊天軟件主動(dòng)去干這件事呢?用我們第26課學(xué)到的DLL注入就好了:我們編寫一個(gè)DLL,在DLL里面調(diào)用這個(gè)函數(shù)解除窗口保護(hù),然后把DLL注入到目標(biāo)聊天軟件進(jìn)程中就好了。

我們先用Spy++看一下要解除保護(hù)的窗口,通過上面APImonitor中抓到的兩次調(diào)用SetWindowDisplayAffinity函數(shù)所設(shè)置的兩個(gè)窗口句柄值在Spy++中找到這兩個(gè)窗口:

查看兩個(gè)窗口的窗口類和窗口名稱,接下來,寫代碼解除保護(hù):

在DLL加載的時(shí)候就執(zhí)行上述動(dòng)作:

BOOL APIENTRY DllMain(HMODULE hModule,
 DWORD  ul_reason_for_call,
 LPVOID lpReserved
)

{
    // 注釋:本代碼來自公眾號(hào):軒轅的編程宇宙
 switch (ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:
  MessageBoxA(NULL'dll注入成功!''CaptureCrack', MB_OK);
  Work();
  break;
 case DLL_THREAD_ATTACH:
 case DLL_THREAD_DETACH:
 case DLL_PROCESS_DETACH:
  break;
 }
 return TRUE;
}

接下來,把DLL注入進(jìn)去:

int main(int argc, char* argv[])
{
    // 注釋:本代碼來自公眾號(hào):軒轅的編程宇宙
 DWORD dwProcessId = 4092; // 需要自己找到對(duì)應(yīng)進(jìn)程ID
 LPVOID pfnLoadLibraryA = GetFunctionAddress(dwProcessId, 'kernel32.dll''LoadLibraryA');


 // 2、拿到進(jìn)程的句柄
 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
 if (!hProcess) {
  printf('can not open process!\n');
  return 0;
 }

 // 3、在進(jìn)程中分配內(nèi)存
 LPVOID address = VirtualAllocEx(hProcess, NULL100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
 if (!address) {
  printf('VirtualAllocEx failed!\n');
  return 0;
 }

 // 4、向分配到的內(nèi)存中寫入要注入的DLL路徑,作為參數(shù)
 SIZE_T writeBytes = 0;
 const char* dllPath = 'CaptureCrack.dll';
 if (!WriteProcessMemory(hProcess, address, dllPath, strlen(dllPath) + 1, &writeBytes)) {
  printf('WriteProcessMemory failed!\n');
  return 0;
 }


 // 5、創(chuàng)建遠(yuǎn)程線程
 HANDLE hThread = CreateRemoteThread(hProcess, NULL0, (LPTHREAD_START_ROUTINE)pfnLoadLibraryA, address, NULLNULL);
 if (!hThread) {
  printf('CreateRemoteThread failed!\n');
  return 0;
 }

 WaitForSingleObject(hThread, INFINITE);

 CloseHandle(hProcess);
 CloseHandle(hThread);

 return 0;
}

最后,執(zhí)行成功,終于可以截圖了:

上面的辦法,不是個(gè)長(zhǎng)久之計(jì),因?yàn)槌绦蛑貑⒑螅值靡匦伦⑷雭砀摹Mβ闊┑模怯袥]有一勞永逸的辦法呢?

還真有!直接逆向分析找到程序調(diào)用SetWindowDisplayAffinity函數(shù)的地方,找到第二個(gè)參數(shù)傳參的指令,直接修改exe文件中的指令參數(shù),把它改為0,保存exe文件就好了!

來自:軒轅之風(fēng)


該文章在 2024/9/18 12:00:17 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved