Page 1 of 1

"Защита памяти"

Posted: Wed Nov 08, 2017 11:23 am
by chainik
Цитата 1:
Защита памяти - данная опция позволяет защитить образ файла в памяти от каких-либо изменений (целостность данных проверяется по всем секциям, не имеющим атрибут WRITABLE). Проверка целостности образа происходит до передачи управления оригинальной точке входа в программу. В случае нарушения целостности будет показано соответствующее сообщение с полным прекращением дальнейшего выполнения программы.
Цитата 2:
Функция VMProtectIsValidImageCRC позволяет определить факт изменения защищенного модуля в памяти процесса (проверяются только неизменяемые сегменты кода и данных). Результат ее работы (True/False) может быть обработан с помощью защитных механизмов, встроенных в приложение.
Исходный размер .exe: 2667 K
Размер с "защитой памяти", без упаковки: 11427 K
Размер без "защиты памяти", без упаковки, и с вызовом VMProtectIsValidImageCRC() в начале main(): 7681 K

Вопрос: использование "защиты памяти" равносильно или нет проверке через VMProtectIsValidImageCRC() ?
Если "да", то почему получаются настолько разные файлы?
Если "нет", то в чем отличие?

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 9:37 am
by Admin
Защита памяти в отличии от VMProtectIsValidImageCRC():
1. Проверяет целостность файла на диске
2. На этапе инициализации перехватывает API, изменяющие аттрибуты страниц памяти (VIrtualAlloc, NtProtectVirtualMemory) и запрещает менять аттрибуты для тех регионов, которые принадлежат к READONLY сегментам (например сегмент ".text")
3. В процессе выполнения завиртуализированного кода неявным образом проверяет случайные участки кода и данных по READONLY сегментам.

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 9:57 am
by chainik
Тогда, возможно, имеет смысл разделить "защиту памяти" на более мелкие опции?
Чтобы была возможность сохранить пп.1-3, одновременно с этим отключив "проверка целостности образа происходит до передачи управления оригинальной точке входа в программу."
Просто потому что когда юзер видит "соответствующее сообщение с полным прекращением дальнейшего выполнения программы", я не знаю, чем ему помочь, кроме как "ну ты там как-то сам поищи что у тебя такое запущено" :oops:

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 10:14 am
by Admin
Хорошо, вот мы разбили эту опцию на кучу мелких и вы по результату VMProtectIsValidImageCRC() видите, что в память процесса кто-то нагадил. Ваши дальнейшие действия?

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 11:15 am
by chainik
По крайней мере, я могу не вызывать VMProtectIsValidImageCRC. Или сделать её вызов отключаемым, каким-либо секретным способом, который я смогу сообщить легальному юзеру.
Что я могу сделать _сейчас_, чтобы легальные юзеры могли пользоваться софтом? Только отключить "защиту памяти". Всю, целиком, вместе с указанными отличиями "защиты памяти" от простого вызова VMProtectIsValidImageCRC.

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 2:28 pm
by Admin
По крайней мере, я могу не вызывать VMProtectIsValidImageCRC. Или сделать её вызов отключаемым, каким-либо секретным способом, который я смогу сообщить легальному юзеру.
Проблема в том, что вместо легального пользователя к вам может обратиться крякер, который ломает вашу программу, а вы ему подскажете 100% рабочий способ обойти одну из опций защиты.
Что я могу сделать _сейчас_, чтобы легальные юзеры могли пользоваться софтом? Только отключить "защиту памяти". Всю, целиком, вместе с указанными отличиями "защиты памяти" от простого вызова VMProtectIsValidImageCRC.
Я не понимаю почему ваши легальные пользователи не могут пользоваться софтом?

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 3:04 pm
by chainik
Проблема в том, что вместо легального пользователя к вам может обратиться крякер, который ломает вашу программу, а вы ему подскажете 100% рабочий способ обойти одну из опций защиты.
Может. Однако это все-равно лучше, чем вообще отключенная "защита". Нет?
Я не понимаю почему ваши легальные пользователи не могут пользоваться софтом?
Потому что при запуске единственное что они видят - сообщение об ошибке, а у меня нет средств выяснить, что именно на компьютере пользователя является причиной => я не могу им ничем помочь.
Я не говорою что таких пользователей _много_ - их, конечно, мало. Но если платный пользователь, столкнувшись с этим, скорее всего напишет мне (и я не знаю что делать, кроме возврата денег), то сколько потеряно потенциальных покупателей, которые просто не смогли запустить "демо-версию" - я не знаю.

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 3:23 pm
by Admin
Может. Однако это все-равно лучше, чем вообще отключенная "защита". Нет?
Дак отключите ее тогда сразу если вам мешает именно эта опция.
Потому что при запуске единственное что они видят - сообщение об ошибке, а у меня нет средств выяснить, что именно на компьютере пользователя является причиной => я не могу им ничем помочь.
Замечательно! А теперь представьте себе ситуацию, что какой-то вирус (о чем кстати вам и говорит стандартное сообщение) или некачественное системное ПО модифицировало вашу программу так, что она перестанет нормально функционировать - вы будете разбираться в причинах такого поведения? Я думаю что будете, а теперь вопрос - чем это принципиально отличается от того что вы имеете сейчас (программа "работает неправильно")?
Я не говорою что таких пользователей _много_ - их, конечно, мало. Но если платный пользователь, столкнувшись с этим, скорее всего напишет мне (и я не знаю что делать, кроме возврата денег), то сколько потеряно потенциальных покупателей, которые просто не смогли запустить "демо-версию" - я не знаю.
Вы то нам что предлагаете?

Re: "Защита памяти"

Posted: Thu Nov 09, 2017 8:14 pm
by chainik
Вы то нам что предлагаете?
Дать мне возможность решать, что делать в такой ситуации, при сохранении остальных функций "защиты памяти".
Добавить под галкой "защита памяти" вторую галку, отключающую прекращение программы с сообщением об ошибке в случае несовпадения образа в памяти при старте.
А теперь представьте себе ситуацию, что какой-то вирус (о чем кстати вам и говорит стандартное сообщение) или некачественное системное ПО модифицировало вашу программу так, что она перестанет нормально функционировать - вы будете разбираться в причинах такого поведения? Я думаю что будете, а теперь вопрос - чем это принципиально отличается от того что вы имеете сейчас (программа "работает неправильно")?
Сейчас программа вообще не работает, а не "работает неправильно". И в результате модификации программы некачественным, например, F-Secure, правильность её работы никак не страдает.

(кстати, стандартное сообщение "File corrupted..." вводит среднего пользователя в глубокий ступор, и он бросается делать что? "чинить файл" -
т.е. переустанавливать программу)

Re: "Защита памяти"

Posted: Fri Nov 10, 2017 5:08 am
by Admin
Дать мне возможность решать, что делать в такой ситуации, при сохранении остальных функций "защиты памяти".
Добавить под галкой "защита памяти" вторую галку, отключающую прекращение программы с сообщением об ошибке в случае несовпадения образа в памяти при старте.
Никакой второй, третьей, десятой галки НЕ БУДЕТ! Если вас не устраивает функционал VMProtectIsValidImageCRC, то все недостоящие вы можете реализовать так как вам это будет удобно.
Сейчас программа вообще не работает, а не "работает неправильно". И в результате модификации программы некачественным, например, F-Secure, правильность её работы никак не страдает.
Насколько я понимаю вместо выноса мозга авторам некачественного F-Secure вы решили вынести мозг нам? В таком случае я предлагаю вернуть вам деньги за купленный VMProtect и вы приобретете тот протектор, который будет вам делать 100500 галок, чтобы обойти очередной говнософт.

P.S. Я вам по секрету скажу, что вы можете изменить сообщение "File corrupted..." на какое угодно!