1

Тема: Защита папки от открытия, замены и удаления

Доброго времени суток! Очень нужна ваша помощь.
Являюсь админом TeknoMW3. Стараюсь защитить игру от нечестных игроков. В игре появилась защита от применения читов, теперь хочу, чтобы игроки, взломавшие игру до появления античита, не смогли заменить чистую статистику от статистики, полученной в результате применения читов. Вся статистика хранится:

в singleplayer в корневой папки игры по адресу C:\Call of Duty Modern Warfare 3\players2

в multiplayer в корневой папке игры по адресу C:\Call of Duty Modern Warfare 3\dw

В папках создаются файлы с расширением stat при первичном пуске игры. При каждой игре игроком статистика меняется (видно в свойствах файла статистики датой изменений).

Теперь суть просьбы. Мне нужно, чтобы игрок, который получит игру не смог ни открыть папки dw и players2, не заменить их одноименными другими папками, не удалить (потому что при удалении игра сама создаст эти папки).

Но чтобы человек смог удалить игру, в запрете на удаление предусмотреть правило, чтобы удаление было возможным только файлом uninstall.exe; который тоже находится в корневой папке игры. Тогда эти папки удалятся полностью с игрой.

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

Хотелось бы скрипт (exe), который будет запускаться совместно с запуском операционки.

Ваше имя будет вписано золотыми буквами на нашем сервере вместе с разработчиком YMP на этом сайте, который написал скрипт для античита. Люди добрые, помогите в решении! Очень расчитываю на вашу помощь.

2 (изменено: niceice, 2015-01-14 13:56:06)

Re: Защита папки от открытия, замены и удаления

cls 
@ECHO OFF 
title Folder Private 
if EXIST "HTG Locker" goto UNLOCK 
if NOT EXIST Private goto MDLOCKER 
:CONFIRM 
echo Are you sure you want to lock the folder(Y/N) 
set/p "cho=>" 
if %cho%==Y goto LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo Invalid choice. 
goto CONFIRM 
:LOCK 
ren Private "HTG Locker" 
attrib +h +s "HTG Locker" 
echo Folder locked 
goto End 
:UNLOCK 
echo Enter password to unlock folder 
set/p "pass=>" 
if NOT %pass%== PASSWORD_GOES_HERE goto FAIL 
attrib -h -s "HTG Locker" 
ren "HTG Locker" Private 
echo Folder Unlocked successfully 
goto End 
:FAIL 
echo Invalid password 
goto end 
:MDLOCKER 
md Private 
echo Private created successfully 
goto End 
:End

Вот код сохрянать как .bat пароль вводить в PASSWORD_GOES_HERE. Когда сохранили как .bat запускаем создаый файл создается папка с названием Private, вставляете туда файлы которые вам нужны и еще раз нажимаете на файл и папка скрывается как системная и будет путь c:\system\HTG Locker, а не c:\system\private. Ну, а потом пожете скомпилировать .bat в .exe.

3

Re: Защита папки от открытия, замены и удаления

Большое спасибо, что не прошли мимо! После работы попробую. Обязательно отпишусь.

4

Re: Защита папки от открытия, замены и удаления

Человек откроет этот батник в блокноте и узнает пароль. Да и показ скрытых папок в Проводнике включить не проблема.

5

Re: Защита папки от открытия, замены и удаления

YMP пишет:

Человек откроет этот батник в блокноте и узнает пароль. Да и показ скрытых папок в Проводнике включить не проблема.

Скомпилировать .bat  в .exe. да и кто будет знать или пробывать открыть системные папки? Может у вас будут други варинты?

6 (изменено: YMP, 2015-01-14 14:07:40)

Re: Защита папки от открытия, замены и удаления

niceice пишет:

Скомпилировать .bat  в .exe. да и кто будет знать или пробывать открыть системные папки? Может у вас будут други варинты?

Я бы попробовал. Откуда вообще в папке с игрой скрытая системная папка? Ясно же, что дело нечисто!

Вариантов пока нет, я никогда таким не озадачивался.

7 (изменено: DnsIs, 2015-01-15 11:05:00)

Re: Защита папки от открытия, замены и удаления

Мне кажется, что лучше шифровать файл статистики средствами самой игры. Или хранить данные на сервере. А манипуляции с закрытием папки таким вот способом, глупость ИМХО.

Нас невозможно сбить с пути, нам пофигу куда идти.

8

Re: Защита папки от открытия, замены и удаления

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

9

Re: Защита папки от открытия, замены и удаления

Раз уж игра запускается вашей программой, то эта программа могла бы расшифровывать файлы перед запуском игры и зашифровывать после её завершения.

10

Re: Защита папки от открытия, замены и удаления

YMP пишет:

Раз уж игра запускается вашей программой, то эта программа могла бы расшифровывать файлы перед запуском игры и зашифровывать после её завершения.

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

11

Re: Защита папки от открытия, замены и удаления

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

12

Re: Защита папки от открытия, замены и удаления

YMP пишет:

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

Тогда он удаляет мусор, может даже и всю папку с мусором, запускает игру, игра снова создаёт новую папку с кристально чистым файлом статистики, он его меняет ещё на одну копию ломаной статистики и он на коне!

13

Re: Защита папки от открытия, замены и удаления

Я кажется понял, сколько он бы не удалял фалов статистики, сколько бы он не удалял папок со статистикой, всегда буде результат один - мусор в папке со статистикой? Я Вас правильно понял? А как тогда эту программу вмонтировать в игру? Те программы, которые я пробовал требуют всего полного процесса установки на компьютер с участием его хозяина.

14

Re: Защита папки от открытия, замены и удаления

Шифрование можно самопальное сделать, в вашей же программе.

Конечно, он может свернуть игру, не останавливая, и тогда файлы будут незашифрованные. Тут зависит от того, держит ли игра их открытыми постоянно, пока работает. Если держит, то заменить их, думаю, не получится. А если она их открывает только на время чтения-записи, тогда подменить будет можно.

15

Re: Защита папки от открытия, замены и удаления

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

16

Re: Защита папки от открытия, замены и удаления

Эээх, как интересно-то! Аж дух захватывает!

17 (изменено: Malcev, 2015-01-15 13:22:39)

Re: Защита папки от открытия, замены и удаления

А если она их открывает только на время чтения-записи, тогда подменить будет можно

Можно при неактивном окне игры закрывать доступ к файлу статистики.
http://ahkscript.org/docs/commands/FileOpen.htm

18

Re: Защита папки от открытия, замены и удаления

Malcev пишет:

А если она их открывает только на время чтения-записи, тогда подменить будет можно

Можно при неактивном окне игры закрывать доступ к файлу статистики.
http://ahkscript.org/docs/commands/FileOpen.htm

Спасибо за участие. Я не силён в этих кодах. Файл статистики, примерно, имеет какой вид iw_mp_1100001hst4dsku.stat
Не могли бы Вы объяснить на пальцах чайнику как его защитить? Буду очень благодарен.

19 (изменено: Malcev, 2015-01-15 16:19:12)

Re: Защита папки от открытия, замены и удаления

Не дает доступ к файлу в течении 10 секунд:

File := FileOpen("c:\1.txt", "r -r -w -d")
sleep 10000
File.Close()

Шифровать файл ИМХО неверный путь.
Так как при внезапной перезагрузке компьютера вся статистика пропадет.
Лучше создавать 2 процесса следящих друг за другом, которые будут запрещать доступ к файлу статистики при неактивном окне игры и запускать их вместе с загрузкой системы.
Например так:
k.ahk

DetectHiddenWindows, on
File := FileOpen("c:\1.txt", "r -r -w -d")
File1 := FileOpen("C:\Users\Malcev\Desktop\k.ahk", "r -w -d")
File2 := FileOpen("C:\Users\Malcev\Desktop\k1.ahk", "r -w -d")
loop
{
   WinWaitClose, C:\Users\Malcev\Desktop\k1.ahk - AutoHotkey v1.1.15.04
   Run, C:\Users\Malcev\Desktop\k1.ahk
   sleep, 100
}

k1.ahk

DetectHiddenWindows, on
loop
{
   WinWaitClose, C:\Users\Malcev\Desktop\k.ahk - AutoHotkey v1.1.15.04
   Run, C:\Users\Malcev\Desktop\k.ahk
   sleep, 100
}

20

Re: Защита папки от открытия, замены и удаления

Провёл испытания. Как я и думал, файл статистики с самого начала запуска игрового процесса iw5mp.exe удалить из папки dw невозможно, так как процесс занят.
Malcev, спасибо, может быть у вас есть способы решения двойного слежения?

21

Re: Защита папки от открытия, замены и удаления

Выше привел.

22

Re: Защита папки от открытия, замены и удаления

Пока писал Вам, не видел предыдущего сообщения. Буду пробовать.

23

Re: Защита папки от открытия, замены и удаления

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

24

Re: Защита папки от открытия, замены и удаления

Почитайте - Loop (files & folders).

25

Re: Защита папки от открытия, замены и удаления

ihoming пишет:

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

А разве эти файлы на сервере находятся?

26

Re: Защита папки от открытия, замены и удаления

О, если бы эти файлы были на сервере!!!! Мама мия. Сервер контролирует файлы статистики и не пускает  на сервер игрока, если на сервере уже есть другой игрок с таким же номером статистики. Одинаковые номера статистики у разных игроков встечаются очень редко. Но бывают совпадения.

27 (изменено: Malcev, 2015-01-15 19:05:02)

Re: Защита папки от открытия, замены и удаления

Можно попробовать сделать так:
При первом запуске игры скрипт стирает все файлы статистики и ini файл из заданной директории.
После первого запуска он ждет создание файла статистики, создает ini файл с путем к этому файлу и какой-нибудь фразой и не дает их стереть.
При последующих запусках скрипт проверяет ini файл на наличие секретной фразы и если она присутствует, то ничего не стирает.

28

Re: Защита папки от открытия, замены и удаления

Браво! Лучшего решения и не придумаешь! Только как это реализовать? Я полный чайник с неуёмным желанием сделать мир лучше! Потому что приятна компания порядочных людей.

29

Re: Защита папки от открытия, замены и удаления

Статистика игры находится в папке dw в следующей директории

C:\Call of Duty Modern Warfare 3\dw
Образец файла статистики iw5_m2d02ef8d_1100001b75cf1e8.stat

Данные из корневой папки игры, где хранится ini файл
C:\Call of Duty Modern Warfare 3
Файл называется teknogods.ini

В нём хранится только часть файла статистики (последние 8 цифр и букв, то есть b75cf1e8, или если более точно, то строка в этом файле выглядит так ID=b75cf1e8).

30 (изменено: Malcev, 2015-01-16 15:44:37)

Re: Защита папки от открытия, замены и удаления

Думаю, что проверки на существование ini файла будет достаточно, особенно если его замаскировать в exe.
Я тестировал в блокноте - Вам надо допилить под себя.
Ну и потом вставить #NoTrayIcon - чтобы нельзя было поставить скрипты на паузу через трей.


k.ahk

GameName := "1.txt - Notepad"
GamePath := "C:\Users\Malcev\Desktop\1.txt"
script1Name := "C:\Users\Malcev\Desktop\k.ahk - AutoHotkey v1.1.15.04"
script1Path := "C:\Users\Malcev\Desktop\k.ahk"
script2Name := "C:\Users\Malcev\Desktop\k1.ahk - AutoHotkey v1.1.15.04"
script2Path := "C:\Users\Malcev\Desktop\k1.ahk"
bat1Path := "C:\Users\Malcev\Desktop\run1.bat"
StatisticExt := "lic"
StatisticFolderPath := "C:\Test"
iniPath := "C:\test\exe\exe\1.exe"

#SingleInstance force
DetectHiddenWindows, on
SetTimer, Check, 50
File1 := FileOpen(script1Path, "r -w -d")
File2 := FileOpen(script2Path, "r -w -d")
IfNotExist, %iniPath%
{
   WinWait, %GameName%
   loop
   {
      WinClose, %GameName%
      WinWaitClose, %GameName%
      FileSetAttrib, -R, %StatisticFolderPath%\*.%StatisticExt%
      FileDelete, %StatisticFolderPath%\*.%StatisticExt%
      Run, %GamePath%
      loop
      {
         loop, %StatisticFolderPath%\*.%StatisticExt%
         {
            if (A_Index = 1) and WinActive(GameName)
            {
               StatPath := A_LoopFileFullPath
               break 3
            }
            if (A_Index = 1) and !WinActive(GameName)
               continue 3
         }             
      }
   }
   IniWrite, %StatPath%, %iniPath%, Game, StatPath
}
IniRead, StatPath, %iniPath%, Game, StatPath
File3 := FileOpen(iniPath, "r -w -d")
loop
{
   WinWaitClose, %GameName%
   File4 := FileOpen(StatPath, "r -w -d")
   WinWait, %GameName%
   File4.Close()
}

Check:
IfWinNotExist, %script2Name%
{
   FileDelete, %bat1Path%
   FileAppend, start %script2Path%, %bat1Path%
   Run, %bat1Path%
   WinWait, %script2Name%
   FileDelete, %bat1Path%
}
return

k1.ahk

script1Name := "C:\Users\Malcev\Desktop\k.ahk - AutoHotkey v1.1.15.04"
script1Path := "C:\Users\Malcev\Desktop\k.ahk"
bat2Path := "C:\Users\Malcev\Desktop\run2.bat"

#Persistent
#SingleInstance force
DetectHiddenWindows, on
SetTimer, Check, 50
return

Check:
IfWinNotExist, %script1Name%
{
   FileDelete, %bat2Path%
   FileAppend, start %script1Path%, %bat2Path%
   Run, %bat2Path%
   WinWait, %script1Name%
   FileDelete, %bat2Path%
}
return

31 (изменено: Malcev, 2015-01-15 23:36:48)

Re: Защита папки от открытия, замены и удаления

Изменил чуток, чтобы нельзя было закрыть через End Process Tree.
Думаю возможно, чтоб их вообще не было видно в процессах, но это уже будет что-то похожее на троян.

32 (изменено: ypppu, 2015-01-16 00:08:08)

Re: Защита папки от открытия, замены и удаления

YMP пишет:
niceice пишет:

Скомпилировать .bat  в .exe. да и кто будет знать или пробывать открыть системные папки? Может у вас будут други варинты?

Я бы попробовал. Откуда вообще в папке с игрой скрытая системная папка? Ясно же, что дело нечисто!

Вариантов пока нет, я никогда таким не озадачивался.

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

33

Re: Защита папки от открытия, замены и удаления

Если бы геймеры знали, как будет устроена эта защита, то, может быть, они бы сюда и пришли. Будут ехе файлы, а что они делают? Эхххх, нечестных игроков ждёт сюрприз! Представляю их круглые глаза на невозможность вставить свою взломанную статистику! И это всё бладоря вашей помощи! Спасибо большое. После работы буду проводить испытания. Отпишусь.