Что нового

Помогите с компиляцией

eus_deus

Новичок
Сообщения
118
Репутация
0
Доброго времени суток!
Творятся прям чудеса.
Ранее я пользоволся последовательностью :обфускатор, Au3Wrapper, PECompact (через тотал коммандер)
Потом от обфускатора отказался (что то с функциями стало, хотя вроде проблемные функции указаны) и надолго
Теперь озаботился размером скрипта, решил вернутся к истокам
Оказалось, что обфускатора более нет, есть какой то Au3Stripper
Скачал Autoit Loader, но там вместо директив Au3Wrapper (которого там и нет собственно) используются директивы pragma
Файл на выходе размером радует, но работой - нет. То есть - я в точке, когда Au3Stripper должен игнорировать некие функции
Вопрос - как бы их вписать и куда?
Пробовал так (в скрипт):
Код:
#Au3Stripper_Ignore_Funcs=Execute

Но понимаю, что это вроде директива Au3Wrapper , которого, как я писал выше, там нет
В общем, кто что знает и может рассказать?
Как исправить мои действия или как делаете вы?
Сообщение автоматически объединено:

Самостоятельно ничего не вышло, придется отложить до лучших времен
 
Последнее редактирование:

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
есть какой то Au3Stripper
У меня наоборот: с Au3Stripper не сложилось, то тернарные выражения режет, то ещё что-то...
Продолжаю пользоваться Obfuscator+AutoIt3Wrapper, но выбрал версии Obfuscator 1.0.30.4 и AutoIt3Wrapper 2.1.2.9
Есть нюансы:
1. Не использовать Директиву #AutoIt3Wrapper_Res_Compatibility=
2. Директива #Obfuscator_Ignore_Funcs, где прописываются функции, которые не обрабатываются, имеет ограничение в 900 символов, поэтому имена функций лучше сокращать, но и это можно обойти... отдельной обработкой после обфускации и перед компиляцией
В архиве программы, возможно поможет.
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
2. Директива #Obfuscator_Ignore_Funcs, где прописываются функции, которые не обрабатываются, имеет ограничение в 900 символов,
У меня она вообще не обрабатывается
Писал и так:
Код:
#Obfuscator_Ignore_Funcs=_Execute(), _ObjEvent()

И так:
Код:
#Obfuscator_Ignore_Funcs=Execute, ObjEvent

И вот так:
Код:
#Obfuscator_Ignore_Funcs=_Execute, _ObjEvent

Но обфускатор все равно пишет о наличии ошибок
 

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
У меня написано так:
Код:
#Obfuscator_Ignore_Funcs=FUN1,FUN2,_W_H,_W_N,_W_P,_W_S,_W_Z

т.е. пишется полное имя функции без скобок.

Что касается ошибок надо смотреть Obfuscator.Log на чём остановился, возможно это не из-за функций, а из-за какого-то неправильного синтаксиса в строке на которой остановился Obfuscator
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Andrey_A, а какие параметры обфускатора используешь?
с этими например он не запускается у меня:
Код:
/sf /sv /om /cs=0 /cn=0
 

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
Какие параметры обфускатора используешь
Вот пример шапки для всех моих программ

Код:
; TCIMG.au3
#Region
#AutoIt3Wrapper_Outfile=TCIMG.exe
#AutoIt3Wrapper_OutFile_X64=TCIMG64.exe
#AutoIt3Wrapper_Compile_both=Y
#AutoIt3Wrapper_Icon=TCIMG.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
; это для компиляции программы консольного типа
; #AutoIt3Wrapper_Change2CUI=Y
#AutoIt3Wrapper_Res_Icon_Add=TCIMGText.ico
#AutoIt3Wrapper_Res_Comment=Утилита с параметрами командной строки
#AutoIt4Wrapper_Res_Description=TCIMG - Мощное средство автоматизации
#AutoIt3Wrapper_Res_Fileversion=30.8.0.0
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n
#AutoIt3Wrapper_Res_LegalCopyright=Copyright (c) 2012-2022 Averin Andrey
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Run_Au3check=n
#AutoIt3Wrapper_Res_Field=Version|30.8.0.0
#AutoIt3Wrapper_Res_Field=Build|%date%
#AutoIt3Wrapper_Res_Field=PrivateBuild|
#AutoIt3Wrapper_Res_Field=Coded by|Averin Andrey
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
#AutoIt3Wrapper_Res_Field=CompanyName|Averin Andrey http://tc-image.3dn.ru
#AutoIt3Wrapper_Res_Field=InternalName|TCIMG.exe
#AutoIt3Wrapper_Res_Field=OriginalFilename|TCIMG.exe
#AutoIt3Wrapper_Res_Field=CompiledScript|%AutoItVer%
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 162,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 164,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 169,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,7,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,8,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,9,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,10,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,11,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,12,
#AutoIt3Wrapper_Run_After=Programs\Resources\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,313,
#Obfuscator_Ignore_Funcs=FUN1,FUN2,_W_H,_W_N,_W_P,_W_S,_W_Z
#Obfuscator_Ignore_Variables=$GLOBALPROGR,$GLOBALLOCAL,$GLOBALTOTAL
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0 /sci=0
#EndRegion
#NoTrayIcon
#Obfuscator_Off
; позволяет запусать другие скрипты
#Pragma compile(AutoItExecuteAllowed,True)
#Obfuscator_On
 

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
у меня не работает
Создал скрипт NNNNN.au3 со своей шапкой, накидал всячину, Obfuscator+AutoIt3Wrapper = всё прошло без ошибок, вот архив

Может дело не в функции ObjEvent , а в тех функциях, которые они используют, в этом примере "MyErrFunc"
Код:
$oMyError=ObjEvent("AutoIt.Error", "MyErrFunc")

Если эту функцию нужно сохранить в оригинале, то её и надо прописывать:
Код:
#Obfuscator_Ignore_Funcs=MyErrFunc
 
Последнее редактирование:
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
посмотрю, в чем косяк
Получить то получил результат, но не рабочий. Надо выяснять, какие функции вносить в исключения
Сообщение автоматически объединено:

Может дело не в функции ObjEvent , а в тех функциях, которые они используют
Ругается на строку:
Код:
$__g_oIEErrorHandler = ObjEvent("AutoIt.Error", $__g_sIEUserErrorHandler)

Вписывал и переменную, и функцию - толку нет, пишет о ошибке
Но причина неработы того, что надо, не в этом

Не могу побороть эту Execute... Придется как и ранее компилировать без обфускации, аналогов Execute я не знаю
Сообщение автоматически объединено:

Вот примерно в такой конструкции у меня используется Execute (строки с функциями в моем варианте прописаны в отдельном текстовом файле, откуда и считываются). И обфускатор ее упорно обрабатывает (или что он там с нею делает), что приводит к ее неработоспособности
Код:
#Region
#AutoIt3Wrapper_Outfile=test.exe
#AutoIt3Wrapper_OutFile_X64=test64.exe
#AutoIt3Wrapper_Compile_both=Y
#AutoIt3Wrapper_Icon=1.ico
#AutoIt3Wrapper_Compression=2
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=test
#AutoIt3Wrapper_Res_Description=test
#AutoIt3Wrapper_Res_Fileversion=1.0
#AutoIt3Wrapper_Res_LegalCopyright=Copyright (c) 2022 tester
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Run_Au3check=y
#AutoIt3Wrapper_Res_Field=Version|1.0
#AutoIt3Wrapper_Res_Field=Build|%date%
#AutoIt3Wrapper_Res_Field=Coded by|tester
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
#AutoIt3Wrapper_Res_Field=CompanyName|tester
#AutoIt3Wrapper_Res_Field=InternalName|test
#AutoIt3Wrapper_Res_Field=CompiledScript|%AutoItVer%
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 162,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 164,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Icon, 169,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,7,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,8,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, Stringtable,9,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,10,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,11,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,12,
#AutoIt3Wrapper_Run_After=Utilities\Scripting\AutoIt\ResHacker\ResHacker.exe -delete %out%, %out%, stringtable,313,
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0 /sci=0
#Obfuscator_Ignore_Funcs=Execute
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"

_main()

Func _main()
    Execute('_tester()')
    If @error <> 0 Then MsgBox(0, 'Error', 'Error in Execute')
EndFunc

Func _tester()
    $qw = 'qwertus'
    MsgBox(4096,"Переменная $qw","Файл test_execute.au3 ~~ Строка 36"&@CRLF&"$qw =>"&$qw&"<=")
EndFunc
 
Последнее редактирование:

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
Вот примерно в такой конструкции у меня используется Execute
Я писал выше "Может дело не в функции ObjEvent , а в тех функциях, которые они используют, в этом примере "MyErrFunc"..."
В Execute может быть прописано что угодно, к примеру: Execute("$a+1") или Execute("$0.document.getElementById('player')")

Поэтому в директиве #Obfuscator_Ignore_Funcs= её прописывать не имеет смысла....
Если прописать #Obfuscator_Ignore_Funcs=_tester , то все работает при обфускации.
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Andrey_A, ты прав. Ищу пути реализации на моем примере, а не на абстрактном выложенном выше

А ты потом Upx используешь? PECompact?
Заметил (после внесения переменных и функций в игнор и какой никакой работы, ну хоть принцип понятен), что несжатая версия ведет себя правильно, а сжатая PECompact запускается с ошибкой и вылетом....
Притом 64 бита, сжатая mpress - как и положено ведет себя по заводу и задумке автора
 
Последнее редактирование:

Andrey_A

Продвинутый
Сообщения
319
Репутация
68
А ты потом Upx используешь? PECompact?
PECompact я перестал использовать, из-за большей антивирусятины... Upx достаточно
Что касается x64 версии я давно отказался - много траблов было в различных функциях меню, и уже не помню где..., которые нет времени выяснять...
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
Andrey_A, в принципе все нормально. Осталось отлавливать нерабочие элементы и вкидывать в исключения
 
Верх