Автор Тема: Проблема кодировки AutoIt3Wrapper Obfuscator  (Прочитано 276 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн winix [?]

  • Новичок
  • *
  • Сообщений: 74
  • Репутация: 0
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Стояла старая версия и проблем не знал. Scite писал в ansi, единственное неудобство, на github при просмотре крюкозябры и n++ думал что это koi8 и менял заглавные буквы знаками, но я эти места просто не трогал.

Решил я прикрутить врапер, скачал портативную scite, в итоге всё накрылось. Снёс всё и поставил с инсталятора последний autoit и полный scite.
В итоге scite начал показывать крюкозябры, но обошлось конвертированием через n++ в utf8.

Вторая проблема которая так и не решилась, невозможно создать кирилический файл. Если создать файл пишет всегда вопросы, даже если туда вставлять текст.
(нажмите для показа/скрытия)

Но вот решил настроить обфускатор и всё упёрлось в то что он работает только с ansi, а scite его не понимает потомучто работает в utf8.

Обфускатор врапера похоже единственое что умеет ужимать.
(нажмите для показа/скрытия)
раньше вырезал функции из библиотек и втыкал в свой файл, также и с константами, и размер заметно менялся. Отключив какието константы размер бинарника уменьшился на треть. У обфускаторе тоже получилось как раз в 100кб сэкономить.

После запуска обфускатора он создаёт свой файл _stripped.au3 который в n++ открывается как ansi  и этиже крюкозябры я получаю в gui , но переключив в utf8 получаю нормальный текст, сохраняю уже как utf8. Перетаскиваю его в scite, получаю нормальный текст.
Собираю этот _stripped.au3 и получаю вроде как уже нормально почти всё, кроме вот этот строчки
было
 =(  °w° )=
стало
 =(  �w� )=
но этотже  опять стал почемуто ansi, так что второй раз это собрать я не могу.

В общем мы имеем исходники которые в utf8 понимаются scite и врапером. И врапер который из этих исходников делает ansi и не может их нормально собрать.

Есть какието простые решения ?
Переучить stite в ansi , вроде как не плохой вариант, да он и сам хочет, но не знаю как.
Найти тот кусок кода во врапере который делает этот промежуточный исходник и перекодировать его перед выводом.

Имел ктото ктото такие проблемы при сборке, ведь из коробки не работает?
Может есть патченый врапер?
Неужели никто автору ещё баг не описал или только мне не повезлор

Русское сообщество AutoIt

Проблема кодировки AutoIt3Wrapper Obfuscator
« Отправлен: Январь 14, 2018, 01:12:56 »

Онлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 855
  • Репутация: 349
    • Награды
  • Версия AutoIt: 3.3.8.1

Онлайн winix [?]

  • Новичок
  • *
  • Сообщений: 74

  • Автор темы
  • Репутация: 0
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Проблема кодировки AutoIt3Wrapper Obfuscator
« Ответ #2, Отправлен: Январь 14, 2018, 04:37:50 »
Попробую почитать, но автор вродебы не говорил что менял кодировку модулей.

А тем временем после моего опыта строка стала иной
 =(  ?Р)=

Я так понял что проблема с C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3 который работает только там. Хотел поменять кодировку, 5 часов тыкал в него отладочными метками, но так и не нашёл того места где он сохраняет файл. Он просто ниодной из этих функций не пользуется, работает только полоска статуса в AutoIt3Wrapper.exe при запуске с батника, вот там эти метки ещё работают.
Но FileCopy и FileWrite( просто ничего не делают.

Код: AutoIt [Выделить]
;978
$ScriptFile_In_stripped = StringTrimRight($ScriptFile_In, StringLen($ScriptFile_In_Ext)) & '_stripped' & $ScriptFile_In_Ext
;2529
FileCopy(StringTrimRight($ScriptFile_In, StringLen($ScriptFile_In_Ext)) & '_stripped' & $ScriptFile_In_Ext, $TempDir & "\scriptin.tmp", 1)

Чтото я не пойму откуда они идут, но кодировка пропадает ещё до них. Перекодировал исходник и собирается нормально, только в ide читать не могу ничего.
Почемуто авторы всеми силамаи боролись за перекодирование всех видов utf , а то что autoit умеет создавать только ansi файлы они почемуто не узнали.
Но scite при следующем открытии опять перекодировал в utf8.

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


Добавлено: Январь 14, 2018, 17:00:47
В общем накатал батник в виде костыля.
Запуску через scite кодировка не мешает, а саму прогу собираю батником.
Но почемуто не удаляется временный файл обфускатора _stripped.au3
@set @x=0; /*
@echo off
set "autoitdir=C:\Program Files (x86)\AutoIt3"
set path=%path%;"%autoitdir%\Aut2Exe\"
set "xUPX="%autoitdir%\Aut2Exe\"upx.exe"
set app64=GUI_x64e
set "srcdir=%~d0%~p0"
set "src_main=gui.au3"
set "srctmp=~1251%src_main%"
set "outdir=%~d0%~p0"

title build %app64%
taskkill /im %app64%*

rem запись метки сборки в исходник
set now=%DATE: =0% %TIME: =0%
for /f "tokens=1-7 delims=/-:., " %%a in ( "%now%" ) do (
set now=%%a%%b%%c.%%d%%e
)
set "now=%now:~-11%"
>"%srcdir%version.au3" echo Global Const $version = "  0.%now% dev2"

rem перекодируем файл.
rem http://www.cyberforum.ru/post7145805.html
call :Recode "%srcdir%%src_main%" "%srcdir%%srctmp%" utf-8 windows-1251
:Recode in.[исходный файл] in.[результирующий файл] in.[кодировка исходного файла] in.[кодировка результирующего файла]
cscript.exe //nologo //e:jscript "%~f0" "%~1" "%~2" "%~3" "%~4"

rem собираем врапер если его нет, с вывлдом в консоль и иконкой которой, дефолтно нет.
if not exist "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" (
echo Not Found "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" ...
copy "%autoitdir%\Icons\au3.ico" "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.ico"

"%autoitdir%\Aut2Exe\Aut2exe_x64.exe" /in "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /out "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /x64 /console /icon "%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.ico"
)

rem переходим в папку чтоб добавились ресурсы
cd /d "%srcdir%"
"%autoitdir%\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /in "%srcdir%%srctmp%" /out %outdir%%app64%w.exe /nopack /Gui
rem удаляем временный перекодированый файл
del "%srcdir%%srctmp%"
rem удаляев старый финальных бинарник, upx это не умеет
del "%outdir%%app64%wu.exe"
%xUPX% -9  -o "%outdir%%app64%wu.exe" "%outdir%%app64%w.exe" -k
rem удаляем неупакованый бинарник если нужно
rem del "%outdir%%app64%w.exe"

rem тут был Exit /B , но консоль просто пойдёт по кругу
timeout /t 1
exit





 
*/with (new ActiveXObject('ADODB.Stream')) {
  Charset = WScript.Arguments(2);
  Open();
  LoadFromFile (WScript.Arguments(0));
  Text = ReadText();
  Close();
  Charset = WScript.Arguments(3);
  Open();
  WriteText (Text);
  SaveToFile (WScript.Arguments(1), 2);
  Close();
}
« Последнее редактирование: Январь 14, 2018, 17:00:47 от winix, Причина: Объединение сообщений »

Онлайн winix [?]

  • Новичок
  • *
  • Сообщений: 74

  • Автор темы
  • Репутация: 0
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Проблема кодировки AutoIt3Wrapper Obfuscator
« Ответ #3, Отправлен: Январь 15, 2018, 18:52:17 »
Похоже дело даже в AU3Stripper.exe , потомучто без него и файл не портится и размер не уменьшается, всё работу делает он.
Попробую проверить его отдельно если пойму как, но похоже он создаёт файлы только ansi


Добавлено: Январь 16, 2018, 16:05:29
В общем это какаято лютая жесть.
Уже 2 раза столкнулся этой поганью и не знаю кто виноват, n++ которым переводил файлы или scite который переводит их сам.
Началось с того что исходник написанный в старой версии autoit, scite испортил, и я взял копию с гита в 1251, сунул в n++ и перекодировал в utf8 с ним и работал дальше.
(нажмите для показа/скрытия)

(нажмите для показа/скрытия)

Нашёл буржуйскую тему хоть какоето чтиво. Заодно качнул откуда сказали бету Au3Stripper.exe и SciLexer.dll , ничего не дало.
(Дочитал я только до 2015 года, похоже воз и ныне там)

Тут я читая форум игрался с кодировкой делая её UCS-2, как там пишут с ней кодировка была нормальной, но на самом деле эту кодировку не понимал стрипер и просто не работал. Быть может на этом я окончательно и добил файл, но он всё ещё оставался для меня читаемым utf8.

Ну и тут я решил провернуть (первый спойлер) создал новый файл в scite, не посмотрев всунул исходник и он заменили кириллицу на вопросы. Первая попытка мимо.
Переключил кодировку в scite на utf8 и ещё раз вставил туда тотже текст с исходника который кстати тоже в юникоде.
Случилась какаето магия и собралось нормально.

Сравнил файлы в Diffuse, различие только в 1 строке с текстом "#Region", вот только я не вижу какое. Размер отличается на 3 байта, у правильного больше.
Получается что Au3Stripper.exe  для нормальной работы нужно именно utf8-bom глючный линуксовый формат который всегда мешает.
OffTopicщя опять напишут что я криворукий и не умею использовать линуксовый софт для виндовой софтины которая работает только в винде и в вендовой кодировке.
Мне не нужен линуксовый софт
Но частично проблема осталась
(нажмите для показа/скрытия)
« Последнее редактирование: Январь 16, 2018, 16:27:32 от winix »

Русское сообщество AutoIt

Re: Проблема кодировки AutoIt3Wrapper Obfuscator
« Ответ #3 Отправлен: Январь 15, 2018, 18:52:17 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
16 Ответов
7285 Просмотров
Последний ответ Май 02, 2010, 19:55:01
от VitAl2013
31 Ответов
15092 Просмотров
Последний ответ Май 13, 2011, 22:06:00
от Centrinar
0 Ответов
2069 Просмотров
Последний ответ Май 10, 2011, 01:08:51
от Kaster
0 Ответов
1854 Просмотров
Последний ответ Май 15, 2011, 00:06:34
от Centrinar
0 Ответов
1309 Просмотров
Последний ответ Ноябрь 21, 2012, 12:09:17
от damien2008
9 Ответов
4427 Просмотров
Последний ответ Январь 28, 2013, 12:53:18
от jam
8 Ответов
3220 Просмотров
Последний ответ Июнь 07, 2013, 17:02:28
от AZJIO
3 Ответов
1411 Просмотров
Последний ответ Октябрь 28, 2014, 15:43:06
от InnI
1 Ответов
942 Просмотров
Последний ответ Май 08, 2015, 21:18:54
от Yashied
3 Ответов
1285 Просмотров
Последний ответ Май 13, 2015, 05:10:26
от joiner