Полный мануал по созданию компактного кода

Xakep, номер #037, стр. 037-073-1

Horrific aka Фленов Михаил (smirnandr@mail.ru)

Любой хакер думает о том, как сократить размер своей программы. Это же несолидно иметь вирь или троян размером в пару мегабайт. Чем больше размер кода, тем дольше он загружается в память и больше отбирает ресурсов, что очень легко может выдать твое творение. Если при написании офисных приложений мы можем забыть про оптимизацию размера, то для вирусов, троянов и твоих приколов размер кода критичен.

Почему код большой?

В рубрике кодинг мы рассказываем тебе про язык программирования Delphi. Программы, созданные им, получаются достаточно большого размера. С чем это связано? А с тем, что Delphi является объектным языком. В нем каждый элемент выглядит как объект, который обладает своими свойствами, методами и событиями.

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

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

Как же тогда быть?

Но как же тогда создать компактный код, чтобы мой троян занимал минимум места на винте и как можно меньше светился в памяти? У тебя есть несколько вариантов:

1. Не использовать визуальную библиотеку VCL (для любителей Visual C++ это библиотека MFC), которая упрощает программирование. В этом случае придется все делать вручную и работать только с WinAPI. Код в этом случае получается очень маленьким и быстрым. Но тут ты лишаешься визуальности и можешь ощутить весь гемор программирования на чистом WinAPI.

Если ты регулярно читаешь Х, то в ноябре 2001 года ты должен был увидеть пример проги на чистом WinAPI в рубрике кодинг. Там наш запускной файл получился размером всего в 8 кило. И это притом, что при использовании VCL он увеличивается до 300 кило.

2. Сжимать программы с помощью компрессоров. Такой код сжимается в несколько раз, и программа с использованием VCL может превратиться из 300 кило в 30-50. Главное преимущество тут в том, что ты не лишаешься возможностей объектности и можешь спокойно забыть про пятна....

В этой статье я постараюсь как можно подробнее рассмотреть оба этих метода.

Ручной кодиг

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

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

Содержание  Вперед на стр. 037-073-2

ttfb: 3.6399364471436 ms