Интересненько с hosts получается=)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cheater_man, 28 Sep 2011.

  1. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Пишу в Dev C++ этот кривой код
    Code:
    #include <stdio.h>
    int main ()
    {
      FILE * pFile;
      pFile = fopen ("C:/WINDOWS/system32/drivers/etc/hosts","w");
      if (pFile!=NULL)
      {
        fputs ("hi",pFile);
        fclose (pFile);
      }
      return 0;
    }
    если запускаю из под среды то срабатывает.
    если просто как екзешник, то не пашет.
    В чем дело?
    Думаю что если запускаю как экзешник, то уже не от имени администратора. Как решить данный вопрос?
    ps хотя я и есть админ компа=)
     
    #1 cheater_man, 28 Sep 2011
    Last edited: 28 Sep 2011
    1 person likes this.
  2. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Среду то ты запускаешь от имени администратора?
     
  3. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Вроде как-то можно программно получить права администратора попробовать (могу ошибаться, апи не помню). Можно сделать для приложения манифест, который сообщит системе, что оно должно от админа запускаться: http://msdn.microsoft.com/en-us/library/bb756929.aspx

    Самое простое - правой кнопкой на иконке приложения и "Run as administrator" :)
     
    #3 GRRRL Power, 28 Sep 2011
    Last edited: 28 Sep 2011
  4. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    можно с помощью ShellExecuteEx() запросить привилегии для твоего приложения записав в структуру SHELLEXECUTEINFO в поле lpVerb "runs", а в поле lpFile - путь к исполняемому файлу.

    ну или же с помощью манифеста в секции trustInfo поменять значение атрибута level.

    p.s.: у Рихтера это описано.
     
    #4 Ins3t, 28 Sep 2011
    Last edited: 28 Sep 2011
  5. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Code:
    fopen ("C:\\WINDOWS\\system32\\drivers\\etc\\hosts","w")
    Разве не так?
     
  6. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Без разницы, винда поддерживает любые разделители, хоть \ и / чередуй.
     
    2 people like this.
  7. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    может кто-нибудь подскажет альтернативный метод подмены hosts?
     
  8. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Без прав админа даже не пробуй. а под Vista/W7 еще потребуются права UAC
    По другому только сплоиты повышения прав.
     
  9. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    slesh=) ты же по любому другой вариант знаешь=) не просто тупая подмена, как делаю я=) может что-то там в реестре поправить. подскажи пожалуйста
     
  10. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    лучше так
    char windir[MAX_PATH];
    GetWindowsDirectory(windir,sizeof(windir));//определяем где
    //находится папка винды
    strcar(windir,"system32\\drivers\\etc\\host");//сложение строк
    fopen(windir,"a");
    //добавить библиотеку <windows.h> не забудь
    //"a"- добавляет в файл а "w" начинает в него запись...
    //имхо "a" менее палевно
    ps поправьте если что, я в этом деле новичек
     
    #10 Apathy, 2 Oct 2011
    Last edited: 2 Oct 2011
  11. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    есть несколько сплоитов умеющих повышать права,юзай их.
     
  12. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    2 Apathy,
    Code:
    TCHAR buf[MAX_PATH];
    ExpandEnvironmentStrings(_TEXT("%windir%\\system32\\drivers\\etc\\host"),buf,sizeof(buf));
     
    _________________________
  13. Incorruptor

    Incorruptor New Member

    Joined:
    21 Jul 2011
    Messages:
    25
    Likes Received:
    2
    Reputations:
    5
    а батник тоже требует прав админа?
     
  14. Apathy

    Apathy New Member

    Joined:
    25 Aug 2011
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0
    спс, не знал=)
    в зависимости от настроек политики безопасности
    [​IMG]