Забыли пароль?
Запросите новый здесь.

Голосование
Как часто вы посещаете данный сайт?

1 раз в день
1 раз в день
17% [1 Голос]

1 раз в неделю
1 раз в неделю
33% [2 Голосов]

1 раз в месяц
1 раз в месяц
17% [1 Голос]

Очень редко
Очень редко
17% [1 Голос]

Первый раз зашёл
Первый раз зашёл
17% [1 Голос]

Голосов: 6
Вы должны авторизироваться, чтобы голосовать.
Начат: 26.07.2022 08:08

Архив опросов
Случайная тема
Миничат
Только пользователи могут отправлять сообщения.

Redfield
Offline
· 26.03.2024 18:25
А также разного рода манипуляция информацией. Кто заинтересован в этом тоже. Дайте о себе знать. Идеи приветствуются. Но будут отложены на будущее. Так как нужно время для текущего.

Redfield
Offline
· 26.03.2024 18:23
jikaka, Спасибо. Я думаю возродить проект. Проект будет базироваться на последней, седьмой версии системы. с использование окружения php 5.x Основные изменения коснуться визуальной части.

jikaka
OfflineAdmin
· 06.03.2024 06:22
Redfield, раздел Помощь, Обзор версий.

Redfield
Offline
· 03.03.2024 16:16
Всем привет. Где можно почитать об отличиях седьмой версии движка. Что хочется? Минимализм от скриптов и совместимость с аддонами.

kazik
Offline
· 07.01.2024 09:13
Понимаю, что в файле theme.php проблема. Старожилы, подскажите пожалуйста, что посмотреть? https://rusfusion...po
st_30832

Архив миничата
Сейчас на сайте
» Гостей: 11

Гости:
» [Ваш IP] 12:37:15
/Статьи
» 54.198.157.15 12:36:30
/Новости
» 3.234.212.253 12:36:25
/Поиск
» 47.76.209.138 12:36:16
/Ссылки
» 54.198.146.13 12:36:15
/Поиск
» 3.215.79.206 12:36:13
/moddb/error.php
» 54.234.146.26 12:36:05
/Поиск
» 66.249.66.67 12:35:28
» Google [Bot] 12:35:27
/Профиль
» 54.147.110.47 12:35:18
/moddb/error.php
1 - не показано

» Всего пользователей: 1,685
» Новый пользователь: 464rrad
В базе имеется
аддонов: 951
тем: 137
Иерархия статей
Код в моей жизни
Большинство проектов, над которыми работал, довольно быстро стираются из памяти. Но некоторые запоминаешь по гроб жизни. О таком дальше и пойдет речь.

Случилось это давным-давно в одной компании, имя которой называть не станем. Нужно было поработать с кодом программы, являющейся ядром учетной системы и полностью написанной и сопровождаемой парнем, которого только что уволили.

В общем-то, ничего необычного, частенько компании обнаруживают, что важные знания содержаться в одной единственной голове, только когда что-нибудь случается с её владельцем. Как правило, проходит несколько дней в легкой панике и яростном чтении документов, и жизнь входит в своё русло.

Но не в этот раз.

Начала вылезать какая-то ошибка, а парень, которому поручили её исправить вскоре начал нервно хихикать и бормотать что-то бессвязное вроде «вызов гамбургера из пиццы требует коньячку».

Программист, написавший код системы, имел особенное чувство юмора и своё видение «защиты интеллектуальной собственности». Все слышали байки о модулях в бухгалтерии, стирающих все записи, если только не перевести денег на оффшорный счёт в течение 48 часов после увольнения разработчика. С таким довольно легко справиться, даже если принять их все за правду, хотя я ни разу с подобным не сталкивался.

В программе, которую создал тот разработчик, не было логических бомб или похожих гадостей, она спокойно компилировалась и, за исключением описанной ошибки, стабильно работала. Но только представьте себе: все функции и переменные в программе были названы в честь еды. Пиццы, помидоры, различные сорта сыра, фрукты, овощи, выпивка и так далее. Одна бесконечная страница за другой. Единственное, что можно было распознать с ходу – это сишная ‘main’ и обращения к stdlib.

В итоге, я был вынужден проделать неблагодарную работу, по приведению программы к читаемому виду.

Это был по-настоящему виртуозный метод шифрования, и только обладая ключом можно было что-то понять в таком винегрете из кода. Шаг за шагом я преобразовывал программу, переименовывая функции и переменные во что-то более осмысленное, и чем дальше я продвигался, тем проще это делалось.

Работать с исходниками гораздо проще, чем заниматься реверсивным анализом неизвестного кода (т.к. в начале нужно отделить данные от кода и понять, какого было представление на высоком уровне, в данном случае высокоуровневое представление было у меня в текстовом виде), так что работа не была невозможной или даже особенно сложной. Работа была просто нудной. Как только удавалось установить истинный смысл функции или переменной, всё остальное делалось командой «заменить».

Другой проблемой было качество кода. На самом деле, лапша в коде делала его гораздо более сложным для понимания, чем отсутствие смыслового наименования. В общем, как только я закончил переименование функций и переменных, я переписал немалую его часть, чтобы упростить понимание и увеличить эффективность.

Я так и не узнал, была ли у него не зашифрованная версия кода, которую он прогонял через обфускатор, удаляющий любые комментарии и заменяя все имена на бессмысленные. Для начало просто тяжело представить способ мышления человека, вытворяющего такое, но еще более тяжело представить человека, который бы писал такой код напрямую, безумству такого стоило бы спеть песню.

Короче, если вам кажется, что вас не уволят (или возьмут обратно) только потому, что в вашем коде невозможно разобраться – вы бредите. Какую бы цель не преследовал тот парень, его ожидания провалились самым ужасным способом (я с трудом представляю, что он смог бы получить рекомендации от своего работодателя). Но, тем не менее, кому-то вы сможете подарить пару веселых недель и счастливого клиента.

PS: автор статьи Jacques Mattheij

Поделиться этой статьей
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Нет данных для оценки.

Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.