Как сделать код нечитабельным?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Как сделать код нечитабельным?

Сообщение drronnie » 25.09.2007 (Вт) 13:05

Есть программа, которая написана на VBScript. Исходник нужно скрыть от пользователя. Как? Прочитал про Windows Script Encode, однако оказалось, что есть програма, которая раскодирует его... Мало того, даже комменты остаются... Потом вспомнил, что где-то читал про следующий подход к проблеме: нужно сделать код нечитабельным!
Сравните это:
Код: Выделить всё

Dim cInvSum, iNumTrans, oInv
For Each oInv In Workarea.Invoices
  If oInv.Sum > 0 Then
    cInvSum = 0
    For iNumTrans = 1 To oInv.TransCount
      cInvSum = cInvSum + oInv.Trans(iNumTrans).Sum
    Next
  End If
Next

и это:
Код: Выделить всё

Dim aa79ui46, iu9asww07, qq78hert2
For Each qq78hert2 In Workarea.Invoices
If qq78hert2.Sum > 0 Then
aa79ui46 = 0
For iu9asww07 = 1 To qq78hert2.TransCount
aa79ui46 = aa79ui46 + qq78hert2.Trans(iu9asww07).Sum
Next
End If
Next

Второй вариант довольно противно читать... так это простейший код...

Теперь собственно сам вопрос: есть ли программки (или какие-либо другие наработки) по сабжу?
P.S. написал тут а не в ASP т.к. подобный вопрос может коснуться и обычного VB6
Компиляция - перевод словесного поноса в машинный код.

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

Сообщение Konst_One » 25.09.2007 (Вт) 13:07

поищи обфускатор

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 25.09.2007 (Вт) 14:09

Konst_One писал(а):поищи обфускатор
Мерси, хоть буду знать, как называется.
Компиляция - перевод словесного поноса в машинный код.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 25.09.2007 (Вт) 14:40

Подобная "обфускация" восстанавливается за несколько минут:
Replace aa79ui46 - > Var_1
Replace iu9asww07 -> Var_2

Форматирование кода можно сделать заново специальными утилитами.

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 25.09.2007 (Вт) 15:04

jangle, конечно ты прав, но для этого нужен деобфускатор... а найти его не так уж и просто... И чтоб так совокупляться с ним нужно очень хотеть это сделать... как защита от среднего уровня пойдёт...

Кстати, может кто подскажет толковый обфускатор?
Компиляция - перевод словесного поноса в машинный код.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 25.09.2007 (Вт) 15:08

конечно ты прав, но для этого нужен деобфускатор... а найти его не так уж и просто... И чтоб так совокупляться с ним нужно очень хотеть это сделать... как защита от среднего уровня пойдёт...


деобфускатор не нужно находить, его легко написать за 15 мин на том же vbscript. Защита нулевая.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.09.2007 (Вт) 16:07

jangle, Var_1 ничем не лучше aa79ui46.
В объемном коде достаточно осмысленные имена поменять на что-то бессмысленное (неважно, будет это рандомный набор букв и цифр или последовательность), чтобы значительно усложнить понимание кода.
Lasciate ogni speranza, voi ch'entrate.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 25.09.2007 (Вт) 16:14

Обфускатор, обычно имеет несколько степеней транфомаци кода - не только переименование переменных, методов итп, но и изменение самой структуры кода - иногда с введением разных оберточных методов, классов итп. Так что если обфускатор хороший, то понятное дело, с наскока код будет не разобрать, но это все равно вопрос времени.
I don't understand. Sorry.

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

Сообщение Konst_One » 25.09.2007 (Вт) 17:20

для VB вообще непонятно зачем это нужно :?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 25.09.2007 (Вт) 18:59

VBScript... (*.vbs)
label:
cli
jmp label

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 25.09.2007 (Вт) 19:11

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.09.2007 (Ср) 8:24

Antonariy, кстати да, для VBS это хороший вариант.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], Yandex-бот и гости: 84

    TopList