Замена логических имён переменных именами-индексами.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Замена логических имён переменных именами-индексами.

Сообщение xenomorph » 03.08.2005 (Ср) 19:01

np. The Prodify - Medusa's Path

Привет всем!

Вводная:

Исследуя в хекс редакторе содержимое
файла программы на ВБ несложно заметить что названия
процедур и переменных находяться там в оригинальном виде -
т.е. plain-text.

Обычно имена функций\переменных и т.п. согласно хорошему
стилю программирования должны иметь - осмысленный вид:

'=====================
GetProperty
s_PropertyName
sarr_PropertiesNames(Index)
l_Counter
s_InData
'=====================

... читабельность кода возрастает в разы.

Обычно я обрабатываю файл для уменьшения размера
следующим образом:

Базовая обработка:

1. Вырезаеться дефолтовый ресурс иконки.
(удаляеться на-Ф-И-к).
2. Убираються данные о файле из секции ресурсов.
(именно не затираються, а устанавливаються в ноль - "").
3. Файл обрабатываетья UPX на максимально возможном сжатии.
4. Файл обрабатываеться Скрамблером.

Но вот возник вопрос - а что если имена переменных процедур
(ещё до компиляции - т.е. обрабатывая исходный код программы)
менять на ... индексы. Т.е. - все имена менять на

'========
s1
s2
s3
s4
s5
...
'========

Предупреждение - выигрышь из-за ВЫРАВНИВАНИЯ
исполняемого модуля на малентких проэктах не виден.

Виден он становиться ТОЛЬКО после обработки паковщиком.

Зависимости прямопропорциональные:

Чем больше файл - тем больше выигрыш по уменьшению размера.
Чем длииннее имена внутри 8-) - тем больше выигрыш по уменьшению размера.

Плюсы обработки таким обфускатором (извините - чтение на ночь .НЕТ сказываеться):

1. Выигрыш в размере.
2. Затрудняетья реверсинг. Достаточно сильно причём 8-).

Вопрос:

Кто-нить писал \ встречал \ использовал \ слышал о подобной прогамме?
Может кто сам делал?
+ мнения.

з.ы.
1. ОГРОМНАЯ ПРОСЬБА прочитать и принять к сведению пункт 2!
2. Просьба НЕ писать: "Ф нафига оно такое надо?".
Я не спрашиваю об актуальности\необходимости данной программы.
Я спрашиваю об методе реализации и степени эффективности.
Если оно Вам не надо - на засоряёте этот топик - будьте выше - пройдите мимо.
3. Приветствуютьмся конструктивные предложения.
--
Заранее огромное спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 03.08.2005 (Ср) 20:58

обфускатор для васика где-то видел, кажется на sourceforge

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 17.08.2005 (Ср) 4:01

Хмм. пройдите мимо.
Прежде чем что-то делать нужно определится для чего это надо. Чтобы засунуть на дискету инсталляцию, ну так наврядли это получится для серьезного приложения, ну а если у меня исходник на 500-600к, то +-10к для меня никакой роли не играет. Такая оптимизация в данном случае лишний, никому не нужный геморрой. Оптимизировать надо сам код и алгоритмы, а не урезать названия переменных. Это мое личное мнение и возможно кто-то с этим не согласится.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 03.01.2006 (Вт) 12:51

Inferno
Это с точки зрения оптимизации, а вот если подумать о реверсинге, то задумка весьма полезная. Пока склоняюсь к тому, что перед компиляцией менять все имена переменных, функций на белеберду, но пока не ясно как это сделать.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 194

    TopList