Даже если вы можете запретить людям изменять вашу DLL, нет ничего, что помешало бы кому-то заменить вашу DLL своей собственной версией, которая ведет себя так же, как ваша, во всех аспектах, которые может определить ваш .exe, но что-то другое в некоторых аспекты - если вы не сохраните всю копию DLL в .exe тоже.
Лучше тратить время и силы на то, чтобы сделать так, чтобы обмануть, чем сложно изменить .dll. Скажем, например, что у нас есть игра Pac-Man (потому что большинство людей будут с ней знакомы), тогда мы могли бы отправить число (и местоположения?) Всех «белых таблеток», которые Pac-Man ел на пути, и время, необходимое для того, чтобы добраться туда. Если игра затем редактирует .dll, чтобы дать 10 очков за каждую белую таблетку или редактирует игру, чтобы Pac-Man двигался в 10 раз быстрее, вы можете убедиться, что это не может быть правильно, потому что на каждом уровне вы знаете как быстро Pac-Man переместился, и сколько очков на белую таблетку Pac-Man нужно получить. Количество раз, когда игрок был убит, и такое может также быть включено в эту информацию, отправленную на сервер.
Подобный принцип может быть применен к игре «стрелять-em-up» или игре, которая зависит от покупки и продажи вещей или чего-то еще. Если у вас есть подробный журнал того, что сделал игрок, чтобы получить оценку, вы можете подтвердить, что «это возможно» или «это невозможно добиться, потому что вы не можете получить этот счет от съемок 10 космических кораблей в 1 во-вторых, поскольку один космический корабль принимает 10 ударов, чтобы сбивать, и требуется 1 секунда для каждого раунда ».
просто сказал: нет. Кто-то, у кого достаточно времени или денег, чтобы купить то время, может делать все, что захочет. Лучше потратьте свое время на что-то более важное. – stijn
Вы можете рассчитать хэш-значение файла DLL и получить основную программу для проверки этого. Он не предотвращает модификацию, но может ее обнаружить. Однако, что-то подобное, что вы делаете, только замедлит атакующего, а не остановит их. – jcoder
@jcoder: Если бы я был взломщиком, я бы просто исправил условный переход, который решает, что произойдет, если DLL не соответствует некоторой ожидаемой контрольной сумме. –