Ну отчего же «костылем». Нормальная практика перехвата вызовов API. Даже красивая в чем-то.
К слову, такие решения порой работают лучше и эффективнее, чем официальные «правильные» интерфейсы от разработчиков.
Уровень абстракции не тот, чтобы строго этого принципа придерживаться. К тому же все мэтры признают, что строгое следование всем этим принципам и законам невозможно, всегда приходится искать компромисс.
А вообще, описанный способ сродни декоратору, поэтому я и назвал его красивым. И нет в нем никакой модификации логики, а лишь ее дополнение.
Ну, все закономерно ) Джаверы берут декомпилятор и либо переопределяют часть методов, либо заменяют класс целиком, втаскивая его себе в jar. Дотнетчики пересобирают сборки в IL, добавляя модификаторы virtual к методам и правя код прямо в IL, ну а тем, кто довольствуется компилируемыми языками программирования — приходится работать по-старинке в дизассемблере и hex-редакторе.
Джаверы, пожалуйста, возьмите декомпилятор и добавьте поддержку прокси (или хотя бы изменение адреса сервера) в Opera Mini. Некий полосатый оператор ловко придумал «ошибку тарификации», которой и пользуется уже не первый месяц: habrahabr.ru/blogs/telecom/126536/ (в свою, разумеется, пользу). Предполагаю, что смена IP сервера, к которому обращается Opera Mini, позволит её деидентифицировать.
Несомненно такой способ будет нарушением, но есть и другие — написать загрузчик, использовать ключи реестра для запуска нас как отладчик для этого приложения, или вообще драйвер для перехвата функций. Тогда оригинальный ехе останется нетронутым. А доказать факт анализа пост-фактум теоретически невозможно. Может я все адреса от балды взял и просто так совпало.
Не верится, что все-таки вышла финальная Олька 2.0, думал так и останется ветка 1.х.
Печально, что от плагинов отказались, ведь в 1.10 они очень сильно помогали в распаковке и анализе пакеров/крипторов.
Вам большой респект за исследования, побольше бы статей по reverse engineering!
Хорошая статья.
Есть следующий этап Дао — добавление своих функций эмбеддед системы)
Например, так изменить прошивку SD-карточки, чтобы она стала поддерживать формирование скрытой запароленной зоны и т.п.
Там возникают специфические трудности, в частности, необходимость аппаратного копания до прошивки (выпайка/впайка микросхем памяти и т.п.), определение центрального процессора и его системы команд, и, главное, что меня всегда расстраивало — в отличие от exe, никакой дополнительной инфы о секциях, сегментах, точке входа и т.п. в бинарнике прошивки нет. Просто кирпич кода, часто еще и заксоренный ключом и разбитый на перемешанные блоки…
Расширение функциональности не имея исходного кода