В жизни каждого "правильного" исследователя всегда есть момент, когда ты берешься за что-то, что вероятно тебе нахрен не нужно практически, но крайне интересно с образовательной точки зрения. Интересно решать задачи для расширения кругозора и повышения собственной квалификации, особенно при наличии придурковатого состояния одержимости какой-то фантастической идеей. В моем случае одной из главных одержимостей в 2002 году было желание сделать то, чего еще не существовало, а если и существовало, то работало не так как я хотел, и конечно же было сделано не мной (damn it). Эта же одержимость сподвигла на создание интерцептера, но данный пост о совсем другом проекте. В то время я желал освоить ассемблер, т.к. это язык настоящих гуру и на тот момент идея о том, что настоящий хакер должен знать ассемблер, сидела в моем сознании довольно глубоко. Слепая замена jz на jnz,
сидя в softice конечно давала некие результаты на простых приложеинях, но хотелось большего. Ничего лучше, чем написание собственного дизассемблера, с целью разобраться в этой компьютерной магии, я не придумал. Опять же, дизассемблер дизассемблеру рознь. Простой листинг инструкций меня не устраивал, я хотел получить на выходе исходник, который можно было бы тут же собрать и получить рабочий бинарник, идентичный оригинальному. Не буду вдаваться в такие специфичные проблемы как отделение данных от кода и т.д., а просто покажу что в итоге получилось.
сидя в softice конечно давала некие результаты на простых приложеинях, но хотелось большего. Ничего лучше, чем написание собственного дизассемблера, с целью разобраться в этой компьютерной магии, я не придумал. Опять же, дизассемблер дизассемблеру рознь. Простой листинг инструкций меня не устраивал, я хотел получить на выходе исходник, который можно было бы тут же собрать и получить рабочий бинарник, идентичный оригинальному. Не буду вдаваться в такие специфичные проблемы как отделение данных от кода и т.д., а просто покажу что в итоге получилось.