Хоть и некропостинг, но уж наткнулся случайно. Раз уж помеченного ответа нет, отвечу, если ещё не забросили эту тему и не поломали пару онлайн игр =).
Введение в крекинг с нуля Рикардо Нарвахи -- прекрасный курс. Написано очень подробно, куча полезных маст-хев трюков. Однозначно, курить! (если ещё не прошли)
Все команды ассемблера знать, конечно, не нужно. Достаточно основных пары десятков, знать какие флаги меняют, какие операнды используются, и т. д. Остальные легко найти в
Intel Software Developer Manuals.
Из тулзов маст-хев
OllyDbg в качестве
отладчика, в нём удобно смотреть в реалтайме что там происходит, что-то изменять, колдовать, исследовать, находить ключевые точки для последующего реверса.
Далее, когда уже найден какой-то ключевой поинт, в котором, кажется, кроется нужная фича, берём
IDA Pro и в качестве
дизассемблера/декомпилятора потихоньку реверсим алгоритм. Дальше нужно будет курить IDA Script или IdaPython для автоматизации рутинных действий.
Также ещё довольно полезной фичей будет инструментация кода с помощью фреймворков типа Intel Pin Tool или DynamoRio. Но тут уже надо иметь скилл повыше, чем 2+2 в ассемблере, но результат стоит того.