PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OffTop » Скорее, это теоретический вопрос о правах в директории.


Скорее, это теоретический вопрос о правах в директории.

Сообщений 1 страница 26 из 26

1

вообщем, написал программку. В ней много файловых операций, в основном, в своей же директории.
Я написал инсталлятор проги и он может происталлировать прогу в любое место на компе.
Все работает, если записать прогу на не системный диск, например, D:\Прога, или даже, на системный, но C:\Прога
Но лютые проблемы начинаются, если это сделать, например, в С:\Program Files(x86)\Прога.
Все это связано с блокировкой виндой всех файловых операций записи, даже в своей же папке, программа просто виснет.
Я понимаю, что можно повесить ручками нужные права на директорию, можно скомпилировать прогу с требованием админских прав и тогда тоже все отлично работает, но чужие же программы работают и так, вот что меня смущает. Может, для того, чтобы прога свободно работала на системном диске, нужен статус Проверенного издателя? Вообщем, надеюсь на подсказку, чтобы разобраться с этим вопросом.

Ну и, до кучи уже. Я также вставил кусок самообновления проги. Она качает файл из инета, сохраняет его в темп директории по умолчанию на системном диске, оттуда запускает установшик, завершает свою работу, установшик стирает старую версию, копирует в паку новую, запускает ее, и уже новая версия затирает сам установщик, все происходит в  TEMP директории, которая по умолчанию находится на системном диске. Процесс нехитрый, но защитник винды ненавидит меня, обвиняя в вирусописательстве. Я заметил, что особенно он не любит команду DeleteFile(), и уж тем более DeleteDirectory(). Ну, тоже, требуется совет. Может, и эту проблему решает статус проверенного издателя?

Отредактировано Goga (10.08.2022 06:06:17)

0

2

Я ранее тоже писал на WinXP, где были админские права и всё работало, но Win7-10 такое уже не прокатывает. Если положено хранить настройки в конфигурационной папке, то надо так и делать. Причём можно делать универсально, если прога не находит конфиг рядом с исполняемым файлом, то меняем путь к конфигу на конфигурационную папку "AppData/Roaming". У меня почти во всех прогах так сделано. То есть прога может работать как портабельная, так и установленная.

На счёт DeleteFile, DeleteDirectory это плохо работает на системных папках, если прога пытается удалить что-то, которое является внутри системной папки, то с большей вероятностью любой антивирус будет считать это вирусом. Так как программа удаления пытается удалить что-то в папке программ это скорее всего будет считаться вирусом. Тут я не могу проверить, так как давно прибил виндовый антивирус, он тупо удаляет ничего не спрашивая у хозяина компа, поэтому я поставил бесплатного касперского, а виндового выпилил полностью без возможности восстановления.

0

3

Goga написал(а):

чужие же программы работают и так

Они что-то пишут в Program Files не имея прав администратора?
Настройки обычно хранят в

Код:
Debug GetUserDirectory(#PB_Directory_ProgramData)

0

4

спасибо большое, ребята . Я не придал значения папке ProgramData, я даже не понимал ее значение до этого. вообщем, поэксперементирую и отпишусь.

AZJIO написал(а):

а счёт DeleteFile, DeleteDirectory это плохо работает на системных папках, если прога пытается удалить что-то, которое является внутри системной папки, то с большей вероятностью любой антивирус будет считать это вирусом. Так как программа удаления пытается удалить что-то в папке программ это скорее всего будет считаться вирусом. Тут я не могу проверить, так как давно прибил виндовый антивирус, он тупо удаляет ничего не спрашивая у хозяина компа, поэтому я поставил бесплатного касперского, а виндового выпилил полностью без возможности восстановления.

ну, у меня другое мнение, но это не суть) я же не могу всем говорить, не обращайте внимания, вируса в моей проге точно нет!! Это просто аллергия виндового антивируса на мои скромные поделки )) Вообщем, буду думать, как мне договориться с этим не добрым защитником виндов.

Отредактировано Goga (10.08.2022 14:12:42)

0

5

Goga
возможно программа удаляется каким-то системным образом, как это делается через диалог панели управления "Установка и удаление программ. То есть программа как-то прописывается в реестр и потом её имя можно указать некой функции. То есть в реестре прописывается деинсталятор. Попробуй официальные программы для создания установочных дистрибутивов. Скорее всего антивирус не будет ругаться на этот деинсталятор, так как он имеет сертификат/цифровую подпись.

На счёт конфига у меня так:

Код:
;- ini
Global PathConfig$ = GetPathPart(ProgramFilename())
If FileSize(PathConfig$ + "MyProg.ini") = -1
	PathConfig$ = GetHomeDirectory() + "AppData\Roaming\MyProg\"
EndIf
Global ini$ = PathConfig$ + "MyProg.ini"

тут я убрал для Linux.

Или ещё проще, если ini-файл один, без необходимости обращаться в папку конфигов к другим файлам, то так:

Код:
;- ini
Global ini$ = GetPathPart(ProgramFilename()) + "MyProg.ini"
If FileSize(ini$) < 0
	ini$ = GetHomeDirectory() + "AppData\Roaming\MyProg\MyProg.ini"
EndIf

Для генерации файла можно использовать так:

Код:
Procedure SaveFile_Buff(File.s, *Buff, Size)
	Protected Result = #False
	Protected ID = CreateFile(#PB_Any, File)
	If ID
    If WriteData(ID, *Buff, Size) = Size
    	Result = #True
    EndIf
    CloseFile(ID)
	EndIf
	ProcedureReturn Result
EndProcedure

If FileSize(ini$) < 8 And CreateDirectory(GetPathPart(ini$))
	SaveFile_Buff(ini$, ?ini, ?iniend - ?ini)
EndIf

DataSection
	ini:
	IncludeBinary "sample.ini"
	iniend:
EndDataSection

Отредактировано AZJIO (10.08.2022 22:05:31)

0

6

Goga написал(а):

Процесс нехитрый, но защитник винды ненавидит меня, обвиняя в вирусописательстве.

Программирование как процесс вообще плохо совместим с антивирусами и прочими защитниками.
С точки зрения системного администратора, чем больше запретишь пользователю, тем лучше. В идеале - запретить пользователю работать на компьютере (шутка).
С точки зрения программиста все эти защитники зло, так как только мешают писать программы. А то, что пользователи не умеют этими программами пользоваться и откуда-то берут вирусы, это их пользователей сугубо личная проблема (тоже шутка).
Дилемма.

0

7

AZJIO, спасибо бльшое, я посмотрю. Защитник находит вирусы уже в исходной программе, еще до инсталлятора. Хотя и в нем он тоже находит. Видимо, действительно придется брать готовый инсталлятор.
Smitis, у меня вообще ситуация патовая. Ну, думаю, ща поищу места в проге, где недоволен защитник,мать его(((  Беда в том, что он то пишет Караул, критическая опасность!! То вирусов не найдено, все ок. При этом в коде ничего не меняно! Для чистоты эксперимента компилирую прогу на своем компе, пишу на флешку (на моем компе защитник молчит),  переношу на лэптоп с такой же виндой, бац- вирусы!!! Стирает. Ладно, снова пишу на флешку...., снова переношу молчит. Тогда я спецом натравливаю на прогу,  проверяю, все нормуль, парень, вирусов нет. Вот как в таких условиях траблшутить?

Отредактировано Goga (12.08.2022 05:54:58)

0

8

Goga написал(а):

у меня вообще ситуация патовая

Если определитесь, кто из вас главный, Вы или защитник - не патовая. Просто защитника надо убивать ещё младенчестве - прямо в дистрибутиве. В крайнем случае сразу после установки Винды.

0

9

Вообщем, я пришел к выводам,  после безуспешных попыток избавиться от претензий защитника виндов, что без покупки Code Signing (подпись программы),  разработчику сегодня ничего не светит. На мой взгляд, это такая форма вымогательства, т.е. если у твоей проги нет этой подписи, то защитник виндов обязательно найдет у тебя ужасный вирус. Ну, если программа у тебя не из ста строк, конечно. Причем если он не видит этот вирус сейчас,  то завтра он в том же самом коде уже увидит вирус и конкретно напугает человека, что, мол, эта программа выполняет действия атакующего. Короче, все плохо. Но при этом через час может снова ничего не видеть, хоть как сканируй, будет писать. нет угроз! Видимо, результат зависит от уровня топанья африканских мух.  вобщем, в любом случае, когда "вирус" найден,  доказать потенциальному пользователю свою не принадлежность к верблюду уже маловероятно . Также, как я понимаю, с наличием этого билета от ms(просто ms в доле, конечно, не напрямую), программа существенно свободней себя чувствует в папках, типа %CommonProgramFiles(x86)%
Я правильно сделал выводы, может кто-то высказаться по этому поводу?

Отредактировано Goga (17.08.2022 08:46:42)

0

10

Goga написал(а):

Вообщем, я пришел к выводам,  после безуспешных попыток избавиться от претензий защитника виндов, что без покупки Code Signing (подпись программы),  разработчику сегодня ничего не светит. На мой взгляд, это такая форма вымогательства, т.е. если у твоей проги нет этой подписи, то защитник виндов обязательно найдет у тебя ужасный вирус. Ну, если программа у тебя не из ста строк, конечно. Причем если он не видит этот вирус сейчас,  то завтра он в том же самом коде уже увидит вирус и конкретно напугает человека, что, мол, эта программа выполняет действия атакующего. Короче, давай скорее ее стирать. Но при этом через час может снова ничего не видеть, хоть обсканируйся, будет писать, угроз не найдено! Видимо, результаты поиска зависит от настроения главы MS.  Вобщем, в любом случае, когда "вирус" найден,  доказать потенциальному пользователю свою не принадлежность к верблюду уже маловероятно . Также, как я понимаю, с наличием этого билета от ms(просто ms в доле, конечно, не напрямую), программа существенно свободней себя чувствует в папках, типа %CommonProgramFiles(x86)%
Я правильно сделал выводы, может кто-то высказаться по этому поводу?

Отредактировано Goga (Сегодня 15:46:42)

Отредактировано Goga (17.08.2022 08:49:57)

0

11

Goga написал(а):

что без покупки Code Signing (подпись программы),  разработчику сегодня ничего не светит

Полная ерунда, извините.

0

12

Goga написал(а):

,  после безуспешных попыток избавиться от претензий защитника виндов,

А какие именно попытки были проведены?

0

13

Lin написал(а):

Goga написал(а):

    ,  после безуспешных попыток избавиться от претензий защитника виндов,

А какие именно попытки были проведены?

отключал процедуры, у меня их много. Уже было пофиг, что программа становилась не рабочая (но компиляцию проходила ), лишь бы найти место, из-за которого защитник возбуждался. Но вся беда в том, что такой подход плохо работает из-за того, что процесс детекции "вируса" не однозначный. Казалось бы,  вот, защитник умолк, уже два часа молчит, значит, ура, все найдено. Но, уже по опыту я понимал, что надо еще ждать, потыкать флешкой с кастрированной прогой в другие компы, еще подождать, если, типа,  все хорошо. И вот, наконец-то,  один комп, да напишиет, ага, вирус найден! Что самое интересное, после этого и другие компы, никак не связанные сетью, тоже обычно начинают что-то там детектить. Из-за такой неопределенности процесс поиска ужасно выматывает. В моей проге почти 15т строк, чтоб была понятна картина. И немало файловых операций, в т.ч. не сложные ковыряния памяти. Все операции безобидные, ну, так мне казалось.

Отредактировано Goga (18.08.2022 05:52:56)

0

14

Или антивирус оставляет желать лучшего и его нужно заменить или на компе есть файловый вирус, который заражает exe файлы.

Goga написал(а):

потыкать флешкой с кастрированной прогой в другие компы

Точно компы не заражены вирусом?

0

15

Пётр написал(а):

Или антивирус оставляет желать лучшего и его нужно заменить или на компе есть файловый вирус, который заражает exe файлы.
Goga написал(а):

    потыкать флешкой с кастрированной прогой в другие компы

Точно компы не заражены вирусом?

мысль интересная, я вспомнил, что проверял сторонним софтом. Все было норм. Но, спасибо за идею, я более тшательно отработаю этот момент. Будет что интересное, отпишусь, а то меня уже вымораживает эта ситуация.

Отредактировано Goga (18.08.2022 17:50:25)

0

16

Goga написал(а):

что без покупки Code Signing (подпись программы),  разработчику сегодня ничего не светит.

если обновы выпускаешь редко то можно так:
скомпилил, грузишь файл на https://www.virustotal.com, смотришь кто детектит, пишешь всем письма (можно даже прогу-автомат для этого дела написать) о ложном срабатывании, день-два все проверяют и добавляют в белый список, выкладываешь релиз в сеть.  Периодически проверять отчёт с virustotal

вариант искать у себя в какой процедуре происходит детект - самый бесполезный

Отредактировано Lin (19.08.2022 02:23:17)

0

17

Lin написал(а):

если обновы выпускаешь редко то можно так:
скомпилил, грузишь файл на https://www.virustotal.com, смотришь кто детектит, пишешь всем письма (можно даже прогу-автомат для этого дела написать) о ложном срабатывании, день-два все проверяют и добавляют в белый список, выкладываешь релиз в сеть.  Периодически проверять отчёт с virustotal

вариант искать у себя в какой процедуре происходит детект - самый бесполезный

на вирустотале все круто (ну, почти, по факту, даже писать некому). Вроде умолк злобный виндоусдефендер, после того,  как я кое-что переписал. Я, было, обрадовался. И вот его понесло снова  :mad: . Свирепствует, когда я скачиваю из своей проги с FTP сервера "новую версию" с якобы новым релизом. Прога таже самая, что и родительская. Но в родительской дефендер  сейчас ничего не находит, а в скачанной у него теперь 1 или даже 2 вируса. Один раз даже "нашел" вирус в PureBasic_Complation1.exe за компанию.  Я уже готов купить подпись, все достало,  но не уверен, поможет ли? В МС, что ли  писать?

UPD: Вообщем, буржуйский инет дал совет обратится в MS Premium Support. Это платно, но что поделать. Вообщем, решил пока поставить исключения, а как допишу прогу,  буду долбиться туда. По возможности, отпишу о результатах.

Отредактировано Goga (12.09.2022 14:31:01)

0

18

Goga написал(а):

Я уже готов купить подпись, все достало

Goga написал(а):

Это платно, но что поделать.

Имхо, дешевле дефендер вырубить. Везде. И никогда больше не включать.

0

19

Smitis написал(а):

Имхо, дешевле дефендер вырубить. Везде. И никогда больше не включать.

я не могу это просить  сделать тех, кто захочет воспользоваться моей прогой.

0

20

Goga

Goga написал(а):

я не могу это просить  сделать тех, кто захочет воспользоваться моей прогой.

Это прямо параллельный мир какой-то, населённый садомазохистами - мучаются, страдают, но дефендер не отключают. Извиняюсь.

Попробуйте упаковать файл, начиная от upx и mpress до какого-нибудь более продвинутого протектора.

0

21

Smitis написал(а):

Попробуйте упаковать файл, начиная от upx и mpress

не, от этого только хуже будет

0

22

Goga написал(а):

(ну, почти, по факту, даже писать некому).

в смысле некому?! аверам пишешь которые фолсят
https://www.getvisible.com/false-positi … are-scans/
https://support.virustotal.com/hc/en-us … ntributors
https://www.microsoft.com/en-us/wdsi/filesubmission

0

23

Smitis
от UPX даже детектируемый как чистый файл станет вирусным. Мне наоборот советовали не жать упхом проги, чтобы снизить вероятность детекта.

Если прога бесплатна то точно заморачиваться не надо, кто захочет воспользоваться прибьет антивирусник.

0

24

Lin написал(а):

в смысле некому?! аверам пишешь которые фолсят
https://www.getvisible.com/false-positi … are-scans/
https://support.virustotal.com/hc/en-us … ntributors
https://www.microsoft.com/en-us/wdsi/filesubmission

я имел ввиду, что в вирустотале на 70 антивирусов только один пишет Malicious, какой-то SecureAge ) Я думаю, что по этому поводу беспокоится не стоит. Но дефендер, так его,  стоит у каждого первого (утрирую, конечно, но не сильно) и за авторитетом этого продукта MS меня даже не видно будет. Но за ссылку MS спасибо, я, вроде, вычитал, что подозрительные файлы, при включенном клауде, даже автоматом могу отправляться. Вообщем, как написал выше, решил сменить стратегию. Нет у меня больше столько сил и времени бороться с прикидами дефендера, поставил  исключения в него, дописываю прогу (надеюсь, немного осталось), и оставшуюся энергию направляю не на угождение дефендеру, а на переговоры с ним ))

AZJIO написал(а):

.... Если прога бесплатна то точно заморачиваться не надо, кто захочет воспользоваться прибьет антивирусник.

нет, идея с бесплатностью улетела вместе с потраченным временем на написание. Именно поэтому все приходится делать  аккуратно. Но как оно пойдет, не знаю. Уже поздно бросать проект, раньше надо было думать  :writing:

Отредактировано Goga (15.09.2022 04:27:56)

0

25

По опыту войны с DrWeb, который очень не любит AutoIt (сейчас не знаю, но раньше ОЧЕНЬ не любил), можно было сжать скомпилированный exe тем же upx (brute, ultra brute) после чего тот детектиться переставал.
А есть ещё всякие ASPack и прочие протекторы, которые можно использовать не для защиты, а просто для сокрытия содержимого от антивирусов.

П.С.
Сегодня брат попросил поставить винду на ноут для дочки. Ставлю. Защитник прямо в дистрибутиве вырезан под корень. :)

0

26

Goga написал(а):

за авторитетом этого продукта MS

По личным наблюдениям, авторитет этого продукта как раз очень низкий.

0


Вы здесь » PureBasic - форум » OffTop » Скорее, это теоретический вопрос о правах в директории.