код ========== call 00436582 - в нашем случае это место, где генерируется код, дальше результат генерации записывается в EAX. test eax,eax - здесь правильный код сравнивается с нашим неправильным. je 00438952 - если после сравнения мы получаем 1, то "прыгаем" через код о неверной регистрации и получаем сообщение, что все Ок. Если 0, то спускаемся ниже и получаем сообщение о неверном коде. ========== код JE (расшифровывается как Jump if Equal) - это переход, срабатывающий на единицу. Единица будет, если сравниваемые значения равны. Если JE срабатывает на 1, то JNE - на 0. Заменив JE на JNE, мы получим, что при любом коде, кроме, конечно, правильно, нам скажут "спасибо за регистрацию". Эта пара - не единственные операторы сравнения, есть еще: JL/JG, JB/JA, JMP. Интереснее всего заменить JE на JMP (это безусловный переход: не важно, что мы получим, 1 или 0, перейдем всегда туда, куда надо). Тest - это сравнение содержимого EAX с EAX, кроме test может быть использована команда cmp xxx,xxx, где ххх - это регистры, в которых хранятся некие данные и которые могут участвовать в математических операциях. На самом деле "call 00436582" - это не совсем место, где генерируется код. Это вызов функции перед сравнением, а результат, 1 или 0, записывается в EAX. Смена сравнения даст единичный результат. Поскольку при следующем запуске программы нам придется снова вводить регистрационный код, чтобы программа стала вновь зарегистрированной, обычно "дурят" функцию, выдающую результат. Для этого проще всего сделать, чтобы функция генерации кода выдавала всегда 1. Просто делаем вызов функции и видим участок кода, который генерирует регистрационный номер. В самое начало функции пишем: код ========== mov eax,1 ret ========== код или код ========== xor eax,eax inc eax ret ========== Код эти строки, мы сотрем первые несколько строк функции генерации, но это не страшно. MOV - это команда, которая присваивает EAX значение 1. RET - выход из функции, ведь мы уже добились, что функция дает нам 1, и идти дальше по коду генерации незачем. Второй метод тоже даст 1. APISpy32 v.3.0 - шпион за WinAPI функциями, для платформ Windows. Шпион перехватывает вызовы API функций, производимые программами и даже DLL библиотеками. К тому же, в то время как другие подобные инструменты могут шпионить только за одним приложением, APISpy32 шпионит за всеми процессами в системе, имея для этого специальный навороченный движок. Основные возможности: поддерживает NT/XP/2003, ведёт лог вызываемых WinAPI функций и их входных параметров, поддерживает юникод символы, не нагружает систему.