Hacking

Malware - Detecting

Upload Malware

Doporučujeme














Naše Bannery








Toplist




Vytvorenie novej plochy a skrytie plochy starej
Napísal Paťo Slučiak   
Štvrtok, 28 Marec 2019 03:53

V tomto článku si popíšeme ako navrhnúť funkciu na vytvorenie novej plochy a následne sa do nej prepnúť.
 


Ide o veľmi peknú a zaujímavú funkciu, ktorá nám vytvorí nové okno desktopu do ktorého sa následne prepne.
V jednoduchosti sa užívateľovi načítanému pod desktopom, po spustení tejto funkcie zobrazží nová, čistá plocha než tá, pod ktorou bol prihlásenný.

Funkciu je možné využiť pri písaní malwaru, napríklad RansomWare, kedy chceme, aby sa uzžívateľovi skryla aktuálna plocha a spustila sa plocha nová.


  void CreateNewDesktop(::std::vector<char*>inputrunprocess)
{ char * desktop_name = "MyDesktop"; char explorer_path[MAX_PATH]; ::HDESK newdesktop = NULL; ::HDESK olddesktop; ::STARTUPINFOA d_STARTUPINFOA = {0}; ::PROCESS_INFORMATION d_PROCESS_INFORMATION = {0};
::ExpandEnvironmentStringsA("%windir%\\explorer.exe", explorer_path, MAX_PATH-1); newdesktop = ::OpenDesktopA(desktop_name, NULL, FALSE, GENERIC_ALL);
if(!newdesktop) { newdesktop = ::CreateDesktopA(desktop_name, NULL, NULL, 0, GENERIC_ALL, NULL); if(newdesktop) { if(SetThreadDesktop(newdesktop)) { d_STARTUPINFOA.cb = sizeof(d_STARTUPINFOA); d_STARTUPINFOA.lpDesktop = desktop_name;
::CreateProcessA(explorer_path, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &d_STARTUPINFOA, &d_PROCESS_INFORMATION);
for (std::vector<char*>::iterator it = inputrunprocess.begin() ; it != inputrunprocess.end(); ++it) { ::CreateProcessA(*it, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &d_STARTUPINFOA,
&d_PROCESS_INFORMATION); }

::SetThreadDesktop(olddesktop);
} } }
if(newdesktop!=null) { ::SetThreadDesktop(newdesktop); ::SwitchDesktop(newdesktop); } ::CloseHandle(newdesktop); }



Do bloku //Blok pre vytvorenie procesov zo sÚborov, ktorÉ chceme na novej ploche spustiť// pridávame spustenie programov, teda vytvorenie procesov tých programov, ktoré chceme, aby sa pri načítaní novej ploche spustili.

 

 

 

-----------------------------------------------------------------

Celá funkcia je zakonpovaná do headeru WinAPI.h WinAPI.h


#include "WinAPI.h" //https://www.diallix.net/programing/163-module

int _cdecl main (void) 
{
   ::std::vector<char*>runmodules; 
//Blok pre vytvorenie procesov zo suborov, ktore chceme na novej ploche spustit// runmodules.push_back("c:\\windows\\notepad.exe"); runmodules.push_back("c:\\windows\\regedit.exe"); //-----//
::Diall_WinApi::WinApi::GetInstance()->CreateNewDesktop(runmodules);

return 0; }





 
Joomla ACL by AceACL