Иногда случаются такие ситуации, когда нужно внести изменения в программу, но
исходный код отсутствует. Как тогда изменить код программы?
Решение воздействовать на код программы в отсутствие ее исходного кода
случается довольно часто и, в основном, этому предшествуют 2 основные причины:
- вы потеряли исходный код;
- его у вас никогда и не было, но хотите доработать какую-то программу.
Итак, есть скомпилированный файл, но нет исходного кода, как тогда изменить код
программы? На помощь может прийти процесс декомпиляции. Почему «может»?
Потому что в некоторых случаях и этот процесс бессилен. Плюс, возможно вы хотите
изменить исходный код программы, который специально защищен. В таком случае
программы-декомпиляторы могут оказаться бессильными. Плюс, многое зависит от
конкретного декомпилятора и языка программирования, на котором написана ваша
программа. В некоторых случаях декомпилятор выдает исходный код, в котором вы
не сможете найти нужный участок кода для его изменения.
В общем, «в таком положении» – без отсутствия исходного кода, вероятность, что
что-то получится невысокая, но она есть. А раз есть вероятность, значит можно
пробовать.
Как изменить код программы без исходников?
Первым в этом случае вам может помочь процесс декомпиляции. Декомпиляция —
это способ создания исходного кода программного обеспечения на том языке, на
котором оно было разработана. То есть, компиляция — это когда исходный код
программного обеспечения преобразуется в машинный код, а декомпиляция — это
обратный процесс.
Декомпиляция в некоторых случаях позволяет изменить код программы без
исходников, однако, нужно понимать, что полностью восстановить исходный код
программы может не получиться. Декомпилятор вообще может вам выдать
непонятный результат и вы просто не будете знать что с этим результатом делать. На
практике получается, что чем «меньше» программа, тем качественней проходит
процесс декомпиляции и наоборот — высоконагруженные программы тяжело
декомпилируются.
Декомпиляцию возможно осуществить при помощи специализированных программ:
- VB Decompiler;
- ReFox;
- DeDe;
- EMS Source Rescuer;
- PEID;
- и др.
Если вам известен на каком языке была разработана программа, то нужно искать
декомпилятор именно под этот язык программирования. Если же вам не известно на
каком языке был разработан исходный код , тогда вам потребуется
попробовать несколько декомпиляторов, чтобы найти нужный. Суть декомпиляции сводится к следующему: вы из машинного кода программы пытаетесь восстановить ее исходный код, в котором будете вносить необходимые изменения. Это самый простой метод, но он работает не всегда. Есть еще один альтернативный метод, как изменить исходный код программы без исходника, но он и требует специальной подготовки.
Как изменить код программы без декомпиляции?
В качестве альтернативного метода, как изменить код программы без исходника
выступает изучение ассемблера, в частности раздела «реверс-инженерия», чтобы
уметь воздействовать на машинный код. Да, это сложно, так как потребует долгого и
упорного изучения, но это будет самый верный подход. Ведь в этом случае, вы
будете знать, на какой байт вам нужно воздействовать, чтобы произвести изменения
в машинном коде программе.
В качестве вспомогательного инструмента в этом случае будут программы OllyDbg и
IdaPRO.
Возможно вам будет интересно почитать статью “Quality control: что это такое? Терминология”
Заключение
Изменить код программы без исходника возможно только одним из описанных выше
способов:
- используя декомпилятор;
- изучая ассемблер.
Кстати, декомпилятор может помочь узнать на каком языке написан исходный код.
Принцип распознавания прост: какому языку программирования относится
декомпилятор, который сможет обработать загружаемый код, к тому языку и будет
относится исходный код программы.