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

Issues related to VMProtect
Locked
chainik
Posts: 8
Joined: Wed Nov 08, 2017 11:02 am

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

Post by chainik »

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

Вопрос: использование "защиты памяти" равносильно или нет проверке через VMProtectIsValidImageCRC() ?
Если "да", то почему получаются настолько разные файлы?
Если "нет", то в чем отличие?
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Защита памяти в отличии от VMProtectIsValidImageCRC():
1. Проверяет целостность файла на диске
2. На этапе инициализации перехватывает API, изменяющие аттрибуты страниц памяти (VIrtualAlloc, NtProtectVirtualMemory) и запрещает менять аттрибуты для тех регионов, которые принадлежат к READONLY сегментам (например сегмент ".text")
3. В процессе выполнения завиртуализированного кода неявным образом проверяет случайные участки кода и данных по READONLY сегментам.
chainik
Posts: 8
Joined: Wed Nov 08, 2017 11:02 am

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

Post by chainik »

Тогда, возможно, имеет смысл разделить "защиту памяти" на более мелкие опции?
Чтобы была возможность сохранить пп.1-3, одновременно с этим отключив "проверка целостности образа происходит до передачи управления оригинальной точке входа в программу."
Просто потому что когда юзер видит "соответствующее сообщение с полным прекращением дальнейшего выполнения программы", я не знаю, чем ему помочь, кроме как "ну ты там как-то сам поищи что у тебя такое запущено" :oops:
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Хорошо, вот мы разбили эту опцию на кучу мелких и вы по результату VMProtectIsValidImageCRC() видите, что в память процесса кто-то нагадил. Ваши дальнейшие действия?
chainik
Posts: 8
Joined: Wed Nov 08, 2017 11:02 am

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

Post by chainik »

По крайней мере, я могу не вызывать VMProtectIsValidImageCRC. Или сделать её вызов отключаемым, каким-либо секретным способом, который я смогу сообщить легальному юзеру.
Что я могу сделать _сейчас_, чтобы легальные юзеры могли пользоваться софтом? Только отключить "защиту памяти". Всю, целиком, вместе с указанными отличиями "защиты памяти" от простого вызова VMProtectIsValidImageCRC.
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

По крайней мере, я могу не вызывать VMProtectIsValidImageCRC. Или сделать её вызов отключаемым, каким-либо секретным способом, который я смогу сообщить легальному юзеру.
Проблема в том, что вместо легального пользователя к вам может обратиться крякер, который ломает вашу программу, а вы ему подскажете 100% рабочий способ обойти одну из опций защиты.
Что я могу сделать _сейчас_, чтобы легальные юзеры могли пользоваться софтом? Только отключить "защиту памяти". Всю, целиком, вместе с указанными отличиями "защиты памяти" от простого вызова VMProtectIsValidImageCRC.
Я не понимаю почему ваши легальные пользователи не могут пользоваться софтом?
chainik
Posts: 8
Joined: Wed Nov 08, 2017 11:02 am

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

Post by chainik »

Проблема в том, что вместо легального пользователя к вам может обратиться крякер, который ломает вашу программу, а вы ему подскажете 100% рабочий способ обойти одну из опций защиты.
Может. Однако это все-равно лучше, чем вообще отключенная "защита". Нет?
Я не понимаю почему ваши легальные пользователи не могут пользоваться софтом?
Потому что при запуске единственное что они видят - сообщение об ошибке, а у меня нет средств выяснить, что именно на компьютере пользователя является причиной => я не могу им ничем помочь.
Я не говорою что таких пользователей _много_ - их, конечно, мало. Но если платный пользователь, столкнувшись с этим, скорее всего напишет мне (и я не знаю что делать, кроме возврата денег), то сколько потеряно потенциальных покупателей, которые просто не смогли запустить "демо-версию" - я не знаю.
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Может. Однако это все-равно лучше, чем вообще отключенная "защита". Нет?
Дак отключите ее тогда сразу если вам мешает именно эта опция.
Потому что при запуске единственное что они видят - сообщение об ошибке, а у меня нет средств выяснить, что именно на компьютере пользователя является причиной => я не могу им ничем помочь.
Замечательно! А теперь представьте себе ситуацию, что какой-то вирус (о чем кстати вам и говорит стандартное сообщение) или некачественное системное ПО модифицировало вашу программу так, что она перестанет нормально функционировать - вы будете разбираться в причинах такого поведения? Я думаю что будете, а теперь вопрос - чем это принципиально отличается от того что вы имеете сейчас (программа "работает неправильно")?
Я не говорою что таких пользователей _много_ - их, конечно, мало. Но если платный пользователь, столкнувшись с этим, скорее всего напишет мне (и я не знаю что делать, кроме возврата денег), то сколько потеряно потенциальных покупателей, которые просто не смогли запустить "демо-версию" - я не знаю.
Вы то нам что предлагаете?
chainik
Posts: 8
Joined: Wed Nov 08, 2017 11:02 am

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

Post by chainik »

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

(кстати, стандартное сообщение "File corrupted..." вводит среднего пользователя в глубокий ступор, и он бросается делать что? "чинить файл" -
т.е. переустанавливать программу)
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

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

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