Что нового

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

Centrinar

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

Medic84

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

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
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
Не знаю,ну попробуй скачай этот и посмотри что получится
 
Автор
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 отсутствует при компиляции ошибок не было
 

Sergey2210

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

Sergey2210

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