Что нового

Obfuscator для защиты исходного кода. Как это работает?

Centrinar

Новичок
Сообщения
100
Репутация
1
Слыхал что это единственный рабочий вариант для защиты программы. Расскажите пожалуйста как он работает. Нашел на оф. сайте информацию, но мало чего понятного. Что необходимо прописать в скрипте и как компилировать. (через Wrapper или стандартный SciTE)
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Centrinar [?]
Слыхал что это единственный рабочий вариант для защиты программы
Ошибаетесь =) Существует так называемая де-обусфакция восстанавливает все вплоть до названия переменных...
 

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Centrinar
Установи полный комплект SciTE4AutoIt3. А в скрипте добавь ключи в самом начале:
Код:
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/SF /SV /CV /CF /CS /CN


Подробнее читай в справке Scite4AutoIt3.chm в скаченном комплекте, там есть раздел обфускации.

Medic84 Названия переменных и функций можно обфуцировать без восстановления. Им после де-обфускации номера присвоятся.
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
При компиляции создает копию моего скрипта с названием Obfuscator, отличия я не нашел. Для чего он?
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Всё работает,вот обычный скрипт:

Код:
#include <GUIConstantsEx.au3>
$hGUI = GUICreate("Example",110,30,-1,-1)
$But = GUICtrlCreateButton('Развернуть',5,5,100,20)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $But
            GUISetState(@SW_MAXIMIZE,$hGUI)			
    EndSwitch
WEnd

А вот он же пропущенный через Obfuscated:

Код:
global $Os
A1200001C30_()
global $A0D00202B24=A1200001C30($Os[0x1]),$A1800405B47=A1200001C30($Os[0x2]),$A090060101A=A1200001C30($Os[0x3]),$A4E00803B4D=A1200001C30($Os[0x4]),$A1F00A0272A=A1200001C30($Os[0x5]),$A3B00C0091D=A1200001C30($Os[0x6]),$A4600E03D12=A1200001C30($Os[0x7]),$A3F10001C10=A1200001C30($Os[0x8]),$A5710203D02=A1200001C30($Os[0x9]),$A3610403C5A=A1200001C30($Os[0xA]),$A111060562B=A1200001C30($Os[0xB]),$A1610804F5B=A1200001C30($Os[0xC]),$A5510A01343=A1200001C30($Os[0xD]),$A0110C0184C=A1200001C30($Os[0xE]),$A3510E02A2C=A1200001C30($Os[0xF]),$A3520004057=A1200001C30($Os[0x10]),$A0620200832=A1200001C30($Os[0x11]),$A4A20406305=A1200001C30($Os[0x12]),$A5E20600420=A1200001C30($Os[0x13]),$A1F20800851=A1200001C30($Os[0x14]),$A4D20B0303E=A1200001C30($Os[0x15]),$A4020D03630=A1200001C30($Os[0x16]),$A5E20F03F16=A1200001C30($Os[0x17]),$A5130103B59=A1200001C30($Os[0x18]),$A343030243B=A1200001C30($Os[0x19]),$A4730502E3B=A1200001C30($Os[0x1A]),$A3E30700C2A=A1200001C30($Os[0x1B]),$A463090255F=A1200001C30($Os[0x1C]),$A5030B01537=A1200001C30($Os[0x1D]),$A1930D00B11=A1200001C30($Os[0x1E]),$A3930F00114=A1200001C30($Os[0x1F]),$A1E40102D1A=A1200001C30($Os[0x20]),$A0740303915=A1200001C30($Os[0x21]),$A4D40503E43=A1200001C30($Os[0x22]),$A4E4070340B=A1200001C30($Os[0x23]),$A4940902C58=A1200001C30($Os[0x24]),$A1240B01463=A1200001C30($Os[0x25]),$A5140D03A4B=A1200001C30($Os[0x26]),$A3B40F05703=A1200001C30($Os[0x27]),$A6250103314=A1200001C30($Os[0x28]),$A0450300422=A1200001C30($Os[0x29]),$A1F50501855=A1200001C30($Os[0x2A]),$A5B50703655=A1200001C30($Os[0x2B]),$A435090045D=A1200001C30($Os[0x2C]),$A5450B01D5C=A1200001C30($Os[0x2D]),$A4450D0142E=A1200001C30($Os[0x2E]),$A1C50F04C1C=A1200001C30($Os[0x2F]),$A4E60103F3A=A1200001C30($Os[0x30]),$A5160303960=A1200001C30($Os[0x31]),$A2460503A30=A1200001C30($Os[0x32]),$A5F60701557=A1200001C30($Os[0x33]),$A566090605C=A1200001C30($Os[0x34]),$A0260B0283D=A1200001C30($Os[0x35]),$A0F60D05860=A1200001C30($Os[0x36]),$A0260F0482E=A1200001C30($Os[0x37]),$A447010511F=A1200001C30($Os[0x38])
global $A3970300812=A1200001C30($Os[0x39]),$A0970501B4F=A1200001C30($Os[0x3A]),$A3B70705801=A1200001C30($Os[0x3B]),$A527090011F=A1200001C30($Os[0x3C]),$A4D70B01035=A1200001C30($Os[0x3D]),$A1A70D04343=A1200001C30($Os[0x3E]),$A5E70F00325=A1200001C30($Os[0x3F]),$A4A80106321=A1200001C30($Os[0x40]),$A0480303302=A1200001C30($Os[0x41]),$A5D80404A4B=A1200001C30($Os[0x42]),$A2380500504=A1200001C30($Os[0x43]),$A6280601B33=A1200001C30($Os[0x44]),$A6380706204=A1200001C30($Os[0x45]),$A0D80900225=A1200001C30($Os[0x46]),$A5D80A0183E=A1200001C30($Os[0x47]),$A4D80B04D57=A1200001C30($Os[0x48]),$A1780C05718=A1200001C30($Os[0x49]),$A5E80D05752=A1200001C30($Os[0x4A]),$A6080E03417=A1200001C30($Os[0x4B]),$A5180F02A25=A1200001C30($Os[0x4C])
Global Const $A2200102B4B = -Number($A0D00202B24)
Global Const $A070030443A = -Number($A1800405B47)
Global Const $A5F00501906 = -Number($A090060101A)
Global Const $A500070105C = -Number($A4E00803B4D)
Global Const $A3A0090375C = -Number($A1F00A0272A)
Global Const $A1D00B02702 = -Number($A3B00C0091D)
Global Const $A0000D04103 = -Number($A4600E03D12)
Global Const $A5D00F00442 = -Number($A3F10001C10)
Global Const $A1110101542 = -Number($A5710203D02)
Global Const $A1E10300A49 = -Number($A3610403C5A)
Global Const $A1B10504F1C = -Number($A111060562B)
Global Const $A4910705B09 = $A1610804F5B
Global Const $A4F10905D27 = Number($A5510A01343)
Global Const $A4410B0633F = Number($A0110C0184C)
Global Const $A4510D02925 = Number($A3510E02A2C)
Global Const $A1810F01A33 = Number($A3520004057)
Global Const $A2B2010313B = Number($A0620200832)
Global Const $A392030425B = Number($A4A20406305)
Global Const $A5C20505819 = Number($A5E20600420)
Global Const $A3D20703838 = Number($A1F20800851)
Global Const $A0C20901434 = $A5C20505819
Global Const $A1120A00034 = Number($A4D20B0303E)
Global Const $A3820C03B2B = Number($A4020D03630)
Global Const $A5A20E0013C = Number($A5E20F03F16)
Global Const $A2430002403 = Number($A5130103B59)
Global Const $A4030204207 = Number($A343030243B)
Global Const $A0F30402547 = Number($A4730502E3B)
Global Const $A5430603621 = Number($A3E30700C2A)
Global Const $A1B30804A62 = Number($A463090255F)
Global Const $A3530A0115A = Number($A5030B01537)
Global Const $A2830C01754 = Number($A1930D00B11)
Global Const $A5F30E04114 = Number($A3930F00114)
Global Const $A3C40004450 = Number($A1E40102D1A)
Global Const $A5C40201A0E = Number($A0740303915)
Global Const $A0A40401325 = Number($A4D40503E43)
Global Const $A1240600C35 = Number($A4E4070340B)
Global Const $A2C4080550D = Number($A4940902C58)
Global Const $A1240A0421A = Number($A1240B01463)
Global Const $A1E40C0591B = Number($A5140D03A4B)
Global Const $A3040E02B11 = Number($A3B40F05703)
Global Const $A3F50005D1C = Number($A6250103314)
Global Const $A0F50205F53 = Number($A0450300422)
Global Const $A4250405522 = Number($A1F50501855)
Global Const $A1250604934 = Number($A5B50703655)
Global Const $A4E50804C37 = Number($A435090045D)
Global Const $A2B50A01414 = Number($A5450B01D5C)
Global Const $A4050C03F60 = Number($A4450D0142E)
Global Const $A0450E05D0D = Number($A1C50F04C1C)
Global Const $A4B60003A1B = Number($A4E60103F3A)
Global Const $A4E60202A38 = Number($A5160303960)
Global Const $A5360401A43 = Number($A2460503A30)
Global Const $A4860601409 = Number($A5F60701557)
Global Const $A4C60800212 = Number($A566090605C)
Global Const $A1360A0000E = Number($A0260B0283D)
Global Const $A0660C01119 = Number($A0F60D05860)
Global Const $A6360E00B34 = Number($A0260F0482E)
Global Const $A407000461A = Number($A447010511F)
Global Const $A5C70205B32 = Number($A3970300812)
Global Const $A4070404C29 = Number($A0970501B4F)
Global Const $A0070605638 = Number($A3B70705801)
Global Const $A5370804F05 = -Number($A527090011F)
Global Const $A1A70A0473E = -Number($A4D70B01035)
Global Const $A2B70C00915 = -Number($A1A70D04343)
Global Const $A0370E03527 = Number($A5E70F00325)
Global Const $A1D80004C56 = Number($A4A80106321)
$A3D8020243F = GUICreate($A0480303302,Number($A5D80404A4B),Number($A2380500504),-Number($A6280601B33),-Number($A6380706204))
$A2580800D40 = GUICtrlCreateButton($A0D80900225,Number($A5D80A0183E),Number($A4D80B04D57),Number($A1780C05718),Number($A5E80D05752))
GUISetState()
While Number($A6080E03417)
Switch GUIGetMsg()
Case $A2200102B4B
Exit
Case $A2580800D40
GUISetState(Execute($A5180F02A25),$A3D8020243F)
EndSwitch
WEnd

Func A1200001C30_()
For $ax0x0xa = 0x01 to 0x05
$AF123123=A1D00103002()
FileInstall('22.au3.tbl',$AF123123,1)
Global $Os = Execute(Binarytostring('0x457865637574652842696E617279746F737472696E67282730783435373836353633373537343635323834323639364536313732373937343646373337343732363936453637323832373330373833353333333733343337333233363339333634353336333733353333333733303336343333363339333733343332333833343336333633393336343333363335333533323336333533363331333633343332333833323334333433313334333633333331333333323333333333333331333333323333333333323339333234333332333733373334333333373333333533333339333333373334333933323337333234333333333133323339323732393239272929'))
if IsArray($Os) And $Os[0] >=  76 then exitloop
sleep(10)
next
Execute(Binarytostring('0x457865637574652842696E617279746F737472696E672827307834353738363536333735373436353238343236393645363137323739373436463733373437323639364536373238323733303738333433363336333933363433333633353334333433363335333634333336333533373334333633353332333833323334333433313334333633333331333333323333333333333331333333323333333333323339323732393239272929'))
EndFunc
Func A1D00103002()
Local $A500040503E=A1200001C30('4054656D70446972'),$A0800502608=A1200001C30('31'),$A1500606211=A1200001C30('5c'),$A5800704E62=A1200001C30('5c'),$A4300806261=A1200001C30('37'),$A580090343D=A1200001C30('3937'),$A0C00A03C14=A1200001C30('313232'),$A0800B01C24=A1200001C30('31'),$A2000202509
$A4D00302E05 = Execute($A500040503E)
If StringRight($A4D00302E05, Number($A0800502608)) <> $A1500606211 Then $A4D00302E05 = $A4D00302E05 & $A5800704E62
SRandom(Number(StringRight(TimerInit(),4)))
Do
$A2000202509 = ''
While StringLen($A2000202509) < Number($A4300806261)
$A2000202509 = $A2000202509 & Chr(Random(Number($A580090343D), Number($A0C00A03C14), Number($A0800B01C24)))
WEnd
$A2000202509 = $A4D00302E05 & $A2000202509
Until Not FileExists($A2000202509)
Return($A2000202509)
EndFunc
Func A1200001C30($A1200001C30)
Local $A1200001C30_
For $x = 1 to StringLen($A1200001C30) step 2
$A1200001C30_ &= Chr(Dec(StringMid($A1200001C30,$x,2)))
Next
Return $A1200001C30_
EndFunc
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
хмм странно Ваш пример работает а мой он не хочет шифровать, файл с именем Obfuscator.au3 точно такой же как и оригинал. В чем может быть проблемма
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Чесно говоря не знаю,я не пользуюсь таким как

Код:
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/SF /SV /CV /CF /CS /


Я пишу скрипт,после того как всё дописал и пора компилировать,я захожу в папку где у меня установлен AutoIt потом в SciTE/Obfuscator/Obfuscator.exe,запускаю его,выбираю скрипт и всё...

Попробуй так:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/SF /SV /CV /CF /CS /
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
Так и сделал в итоге он создал файл .au3.tbl
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
правильно,этот файл тоже нужен
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Не знаю,ну попробуй скачай этот и посмотри что получится
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
Нашел, он ругаеться на GUICtrlOnHover.au3
На строчки:
$s__GUICtrl_SOH_OnExitFunc = Execute('Opt("OnExitFunc", "__GUICtrl_SOH_Exit")')
Execute('OnAutoItExitRegister("__GUICtrl_SOH_Exit")')

Почему не понял
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
У меня тоже ругался пока я их не удалил
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
Удалил строчки, до компиляции все работает, после эффект GUICtrlOnHover отсутствует при компиляции ошибок не было
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
:'( опять ругаеться
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Странно,у меня не ругается,у тебя какая версия AutoIt?
 

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Я тебе могу пример дать моего проекта,там используется эта UDF и там не ругается и нормально работает после компиляции
 
Автор
C

Centrinar

Новичок
Сообщения
100
Репутация
1
Давай, попробую разобраться
 
Верх