eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: RevCred, Vintersorg (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Inno Setup Decompiler
Посл.ответ Сообщение

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 25 декабря 2016 20:14 · Поправил: vden New!
Цитата · Личное сообщение · #1

Декомпилятор скриптов инсталляторов Inno Setup (скрипт в секции [code] инсталлятора).

http://vdisasm.com/isd/

Преобразует байт-код скриптового движка PascalScript в Pascal-like листинг.



На сайте есть "мини-игра" GuessTheCode в виде инсталлятора. Попробуйте узнать алгоритм проверки кода.



Проблемы можно добавлять сюда:
https://github.com/vdisasm/InnoSetupDecompiler/issues

| Сообщение посчитали полезным: DICI BF, mak, Kindly, reversecode, -=AkaBOSS=-, Bronco, ajax, Jaa, v00doo, SReg, MarcElBichon, daFix, 4kusNick, zNob, sendersu, JohnyDoe, MasterSoft, neshta, screen66, kassane



Ранг: 246.9 (наставник)
Статус: Участник
RBC

Создано: 25 декабря 2016 22:02 · Поправил: Kindly New!
Цитата · Личное сообщение · #2

Сюда можно баг-репорты писать? Вот этот бин не открывается:
http://rgho.st/7pXVv86nx

Есть еще пример, как Chr($XX)+Chr($XX) и т.д. некорректно обрабатываются, например:
в скрипте
sPatternArray[1] := Chr($85)+Chr($F6)+Chr($75)+Chr($05)+Chr($5F)+Chr($33)+Chr($C0)+Chr($5E)+Chr($C3);
в декомпиле
gvar_29.0 := #65533#65533'u'#5'_3'#65533'^'#65533;

добавлено:
INC(Integer);
DEC(Integer);
которые доступны в UNICODE версии компиля, в декомпиле возвращаются пустые значения:
INC();

vden пишет:
Я создал репозиторий на github чтобы было удобнее отслеживать проблемы. Желательно добавлять сразу туда.

ок. буду писать о багах туда. все же есть особенности ROPS двигла (Boolean, Format, индексирование WSTRGET в циклах в строковых массивах типа ssEdit.Text[i] и прочее), но кто кодил в Inno не составит особого труда разобраться.

| Сообщение посчитали полезным: vden



Ранг: 315.6 (мудрец)
Статус: Участник
born to be evil

Создано: 25 декабря 2016 22:02 New!
Цитата · Личное сообщение · #3

кросавчег но, современный ISD был бы интересной

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 25 декабря 2016 22:23 · Поправил: vden New!
Цитата · Личное сообщение · #4

Ранг: 75.3 (постоянный)
Статус: Участник

Создано: 26 декабря 2016 00:24 · Поправил: v00doo New!
Цитата · Личное сообщение · #5

Вот это прямо подарок под елку, а то я уже думал год запомнится только антивирусами 10 летних детей и нытьем оных же о Denuvo
Постараюсь нарыть свои старые разборы и прогнать их все, да поискать косяки.


Ранг: 140.5 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 01:36 New!
Цитата · Личное сообщение · #6

Только вот непойму - неужели нереально было то же самое закодить без дотнета 4.6.2 и вин7 в системных требованиях?

| Сообщение посчитали полезным: SReg



Ранг: 246.9 (наставник)
Статус: Участник
RBC

Создано: 26 декабря 2016 02:28 · Поправил: Kindly New!
Цитата · Личное сообщение · #7

vden пишет:
На сайте есть "мини-игра" GuessTheCode в виде инсталлятора. Попробуйте узнать алгоритм проверки кода.

например: 2876543232
или нужен кейген?
Code:
  1.          1.копируем первые четыре символа (цифры)
  2.          v_19 := 4;
  3.          v_20 := 1;
  4.          v_21 := Arg0;
  5.          v_18 := COPY(v_21, v_20, v_19);
  6.          v_2 := STRTOINT(v_18);
  7.          v_2 := v_2 + 5555;
  8.          
  9.          2.копируем следующие четыре символа (цифры)
  10.          v_23 := 4;
  11.          v_24 := 5;
  12.          v_25 := Arg0;
  13.          v_22 := COPY(v_25, v_24, v_23);
  14.          v_3 := STRTOINT(v_22);
  15.          v_3 := v_3 + 3333;
  16.          
  17.          3.складываем и вычисляем остаток 2-ух символов (цифры)
  18.          v_4 := v_2;
  19.          v_4 := v_4 + v_3;
  20.          v_4 := v_4 * 17;
  21.          v_4 := v_4 mod 100;

и что с кодесом? один (что позволяет Inno) из восьми потоков CPU процесса GuessTheCode.tmp грузится до 100%!


Повангую, баг, возможно, в обработчике:
PeekMessage(Msg, Form.Handle, 0, 0, 1)
лучше заменить на
PeekMessage(Msg, 0, 0, 0, 1)
а код в целом выглядит так:
Code:
  1. type 
  2.   TMyMsg = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end;
  3.  
  4. function PeekMessage(var lpMsg: TMyMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL;
  5. external 'PeekMessageW@user32.dll stdcall';
  6.  
  7. function TranslateMessage(const lpMsg: TMyMsg): BOOL;
  8. external 'TranslateMessage@user32.dll stdcall';
  9.  
  10. function DispatchMessage(const lpMsg: TMyMsg): Longint;
  11. external 'DispatchMessageW@user32.dll stdcall';
  12.  
  13. procedure MyProcessMessages;
  14. var
  15.   Msg: TMyMsg;
  16. begin
  17.   while PeekMessage(Msg, 0, 0, 0, 1) do
  18.   begin
  19.     TranslateMessage(Msg);
  20.     DispatchMessage(Msg);
  21.   end;
  22. end;

также сомнение в функции ExitProcess в ONEDITCHANGE... пытаешся завершить процесс? тут родную Exit нужно юзать. и в INITIALIZEWIZARD(); не совсем понятно зачем ExitProcess юзать. Просто форму лучше в InitializeSetup вызывать с деинициализацией по False.

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 16:42 · Поправил: vden New!
Цитата · Личное сообщение · #8

@Kindly
Да, правильно восстановил алгоритм.
Одну проблему я исправил (ту где не открывается файл).
Процесс загружает одно ядро на 100 процентов потому что PeekMessage в цикле постоянно. Я добавил Sleep(50), должно помочь.
ExitProcess закрывает процесс, а Exit просто выходит из процедуры. Если не завершать процесс, то дальше пойдут страницы инсталлятора.

или нужен кейген?
нет это просто небольшой пример
декомпилер хоть еще и далек от идеала, но все-же какой-то анализ уже можно проводить

-=AkaBOSS=- пишет:
Только вот не пойму - неужели нереально было то же самое закодить без дотнета 4.6.2 и вин7 в системных требованиях?

Реально. Но я сейчас веду все проекты на C#.

Кстати, кто-то может подсказать, есть ли сейчас возможность компилировать .net в нативный код? (для десктопных wpf приложений).


Ранг: 140.5 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 17:15 New!
Цитата · Личное сообщение · #9

vden пишет:
Реально. Но я сейчас веду все проекты на C#.

Я имел в виду не "на другом языке", я имел в виду "скомпилить это добро под старый добрый .net 4.0 и NT5 ось".


Ранг: 315.6 (мудрец)
Статус: Участник
born to be evil

Создано: 26 декабря 2016 19:13 New!
Цитата · Личное сообщение · #10

vden
> есть ли сейчас возможность компилировать .net в нативный код?
в компилере, как таковом - нет, насколько знаю. задротство IL

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 20:01 · Поправил: vden New!
Цитата · Личное сообщение · #11

-=AkaBOSS=- пишет:
скомпилить это добро под старый добрый .net 4.0

ок, вроде переделал под net 4, попробуйте
если все норм, залью вместо основного залил

ps
microsoft вроде делает нативную компиляцию, но пока только для UWP приложений

| Сообщение посчитали полезным: mysterio, -=AkaBOSS=-, SReg



Ранг: 140.5 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 20:21 New!
Цитата · Личное сообщение · #12

vden, работает отлично, благодарю!

| Сообщение посчитали полезным: vden



Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 26 декабря 2016 20:57 · Поправил: mysterio New!
Цитата · Личное сообщение · #13

Несколько косметических пожеланий:
1. Добавить меню File->Exit и Help->About (форму с Aboutом или хотя бы MessageBox c датой и номером версии; номер версии добавить в заголовок главного окна ?)
2. По возможности:
Добавить поиск строк (опять же опционально: с возможностью поиска и таких строк Chr($85)+Chr($F6)+Chr($75))
По желанию автора/публики: иконку в трей - будет хорошо, а не будет - ну и .... и без нее летает ;)
Заметил, что в полях кода нет контекстного меню (вида: Copy, Cut, Paste, Select all, Format C: /Y , и все тот же Find) - для тех кто привык копировать через правую кнопку мышки.
3. Можно ли сделать что бы вот такая "ёлка":
Code:
  1. var v_1: Integer;
  2.          v_2: Integer;
  3.          v_3: Integer;
  4.          v_4: Integer;
  5.          v_5: Integer;
  6.          v_6: BOOLEAN;
  7.          v_7: Integer;
  8.          v_8: UnicodeString;
  9.          v_9: BOOLEAN;
  10.          v_10: BOOLEAN;
  11.          v_11: WideChar;
  12.          v_12: Integer;
  13.          v_13: Pointer;
  14.          v_14: BOOLEAN;
  15.          v_15: WideChar;
  16.          v_16: Integer;
  17.          v_17: Pointer;
  18.          v_18: UnicodeString;
  19.          v_19: Integer;
  20.          v_20: Integer;
  21.          v_21: UnicodeString;
  22.          v_22: UnicodeString;
  23.          v_23: Integer;
  24.          v_24: Integer;
  25.          v_25: UnicodeString;
  26.          v_26: UnicodeString;
  27.          v_27: Integer;
  28.          v_28: Integer;
  29.          v_29: UnicodeString;

Сворачивалась в идеале в:
Code:
  1. var v_1, v_2, v_3, v_4, v_5, v_7, v_12, v_16, v_19, v_20, v_23, v_24, v_27, v_28: Integer;
  2.     v_8, v_18, v_21, v_22, v_25, v_26, v_29: UnicodeString;
  3.     v_6, v_9, v_10, v_14: BOOLEAN;
  4.     v_11, v_15: WideChar;
  5.     v_13, v_17: Pointer;

Или хотя бы так:
Code:
  1. var v_1, v_2, v_3, v_4, v_5: Integer;
  2.     v_6: BOOLEAN;
  3.     v_7: Integer;
  4.     v_8: UnicodeString;
  5.     v_9, v_10: BOOLEAN;
  6.     v_11: WideChar;
  7.     v_12: Integer;
  8.     v_13: Pointer;
  9.     v_14: BOOLEAN;
  10.     v_15: WideChar;
  11.     v_16: Integer;
  12.     v_17: Pointer;
  13.     v_18: UnicodeString;
  14.     v_19, v_20: Integer;
  15.     v_21, v_22: UnicodeString;
  16.     v_23, v_24: Integer;
  17.     v_25, v_26: UnicodeString;
  18.     v_27, v_28: Integer;
  19.     v_29: UnicodeString;

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 26 декабря 2016 21:08 New!
Цитата · Личное сообщение · #14

C "елкой" хорошая идея.
Я пока добавлю эти пожелания на гитхаб, а со временем буду разбираться.


Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 27 декабря 2016 00:27 New!
Цитата · Личное сообщение · #15

Еще "бред-о-хотелки" по улуч/ухуд-шению принимаются ? А то накопилось, еще 2-3 неизвестно на сколько глупых или очевидных идеи, не знаю стоит ли вываливать - вдруг никому не нужно....

Ранг: 75.3 (постоянный)
Статус: Участник

Создано: 27 декабря 2016 01:11 · Поправил: v00doo New!
Цитата · Личное сообщение · #16

Не знаю, сильно ли это важно и считать ли вообще, но вот такой мельчайший момент относительно всех других:
Code:
  1. function PREPARETOINSTALL(var Arg0: BOOLEAN): UnicodeString;
  2. var
  3.          v_1: Integer;
  4.          v_2: BOOLEAN;
  5.          v_3: Pointer;
  6.          v_4: TEXECWAIT;
  7.          v_5: Integer;
  8.          v_6: UnicodeString;
  9.          v_7: UnicodeString;
  10.          v_8: UnicodeString;
  11.          v_9: UnicodeString;
  12. begin
  13.          label_2461:
  14.          v_3 := &v_1;
  15.          v_4 := 1;
  16.          v_5 := 0;
  17.          v_6 := ;
  18.          v_7 := '/f /im dwm.exe';
  19.          v_8 := 'taskkill.exe';
  20.          v_9 := 'open';
  21.          v_2 := SHELLEXEC(v_9, v_8, v_7, v_6, v_5, v_4, var v_3);
  22.          exit;
  23. end;

v_6 пустая, там бы '' или просто 0 вбить, да и метки часто просто висят.
mysterio пишет:
Еще "бред-о-хотелки" по улуч/ухуд-шению принимаются ?

У меня на самом деле только одна хотелка, но я понимаю, что в текущем варианте оно сложно вяжется: переименовывать переменные, просто зрительнее намного удобнее бегать глазами
mysterio пишет:
Добавить меню File->Exit и Help->About (форму с Aboutом или хотя бы MessageBox c датой и номером версии; номер версии добавить в заголовок главного окна ?)

Полностью за, а то непривычно аж как-то


Ранг: 246.9 (наставник)
Статус: Участник
RBC

Создано: 27 декабря 2016 01:24 · Поправил: Kindly New!
Цитата · Личное сообщение · #17

v00doo пишет:
v_6 пустая, там бы '' или просто 0 вбить

в качестве пустого параметра нужно '' передавать, ноль это ноль все-таки.
но что-то тут не то, ибо у меня обычные переменные, не являющиеся параметрами, декомпилит нормально:
v_28 := '';
видимо причина в параметрах именно для функции.

Ранг: 75.3 (постоянный)
Статус: Участник

Создано: 27 декабря 2016 01:36 · Поправил: v00doo New!
Цитата · Личное сообщение · #18

Kindly, ну я это понимаю прекрасно, про это и говорю, что странно, что вообще нет значения.
Там '' в сорках естественно, это кусок разобранного инсталлера чужого, руками когда-то разбирал:
Code:
  1. var
  2.   ErrorCode: Integer;
  3. begin
  4.   ShellExec('open', 'taskkill.exe', '/f /im dwm.exe', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
  5. end;

Еще из странных хотелочек: все к тому же переименованию по сути относится:
Code:
  1. v_4 := 'Install';
  2. v_5 := 'Software\Microsoft\NET Framework Setup\NDP\v4\Client\1033';
  3. v_6 := -2147483646;
  4. v_2 := REGQUERYDWORDVALUE(v_6, v_5, v_4, var v_3);

Показывать v_6 в хексе бы, без переключения уже, галочку, например какую-нибудь в настройках для отображения чисел, но это все мелочевка.

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 27 декабря 2016 17:01 · Поправил: vden New!
Цитата · Личное сообщение · #19

mysterio пишет:
по улуч/ухуд-шению принимаются

да. если есть акк на github, лучше туда.
добавляйте что считаете нужным, я отфильтрую

пустая строка
попробуйте последнюю версию, скорее всего уже исправлено

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

я думал отложить это до времен когда я объединю этот проект и code analyzer, но возможно получится раньше

ps забыл, елку сделал, не успеваю обновлять

Ранг: 75.3 (постоянный)
Статус: Участник

Создано: 27 декабря 2016 18:15 New!
Цитата · Личное сообщение · #20

vden пишет:
попробуйте последнюю версию, скорее всего уже исправлено

Да, исправлено


Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 27 декабря 2016 19:27 · Поправил: mysterio New!
Цитата · Личное сообщение · #21

Как сказал Гагарин перед взлетом: Отрезаем шланг с тормозной жидкостью и саму педаль тормоза .... (недоумение) зачем это в ракете - и "поехали":
Менюшек все еще нет.... личная просьба запилить их в таком виде:
File
Blabla
____
Exit

тоесть что бы сверху был разделитель (тоже с Aboutом)

Большую часть из хотелок уже озвучили, остается только дополнить.

"елку сделал" - отлично, теперь еще декомпилер сделать LoL
Елку запилили, а иголки не спилили - "колится в глаза".
Жутко неудобно читать такое вот и другой длинный текст:
Code:
  1. var v_1, v_2, v_7, v_8, v_10, v_14, v_17, v_21, v_23, v_26, v_31, v_32, v_34, v_38, v_42, v_46, v_51, v_52, v_54, v_58, v_62, v_66, v_71, v_72, v_74, v_78, v_82, v_86, v_91, v_92, v_94, v_98, v_102, v_106, v_155, v_160, v_161, v_166, v_167, v_172, v_173, v_178, v_179: Integer;
  2.          v_4, v_28, v_48, v_68, v_88, v_108, v_120, v_121, v_126, v_127, v_132, v_133, v_138, v_139, v_144, v_145, v_150, v_151, v_156, v_157, v_162, v_163, v_168, v_169, v_174, v_175, v_180: String;
  3.          v_9, v_12, v_13, v_16, v_19, v_20, v_24, v_25, v_33, v_36, v_37, v_40, v_41, v_44, v_45, v_53, v_56, v_57, v_60, v_61, v_64, v_65, v_73, v_76, v_77, v_80, v_81, v_84, v_85, v_93, v_96, v_97, v_100, v_101, v_104, v_105, v_113, v_116, v_117: Char;

1. Запилить в контекстном меню или где еще чекбокс "WordWrap" - решит проблему читаемости длинного текста. Здесь есть еще вариант как решить эту проблему для строковых переменных.
2. Помимо опции WordWrap, запилить ограничене на длину строки на стандартные 80-100 символов с возможностью настройки длины (мониторы и запросы у всех разные).
Соответственно куда приятнее читать:
Code:
  1. var v_1, v_2, v_7, v_8, v_10, v_14, v_17, v_21, v_23, v_26, v_31, v_32, v_34, v_38, 
  2.     v_42, v_46, v_51, v_52, v_54, v_58, v_62, v_66, v_71, v_72, v_74, v_78, v_82, 
  3.     v_86, v_91, v_92, v_94, v_98, v_102, v_106, v_155, v_160, v_161, v_166, v_167, 
  4.     v_172, v_173, v_178, v_179: Integer;
  5.     v_4, v_28, v_48, v_68, v_88, v_108, v_120, v_121, v_126, v_127, v_132, v_133, 
  6.     v_138, v_139, v_144, v_145, v_150, v_151, v_156, v_157, v_162, v_163, v_168, 
  7.     v_169, v_174, v_175, v_180: String;
  8.     v_9, v_12, v_13, v_16, v_19, v_20, v_24, v_25, v_33, v_36, v_37, v_40, v_41, 
  9.     v_44, v_45, v_53, v_56, v_57, v_60, v_61, v_64, v_65, v_73, v_76, v_77, v_80, 
  10.     v_81, v_84, v_85, v_93, v_96, v_97, v_100, v_101, v_104, v_105, v_113, v_116, 
  11.     v_117: Char;

либо
Code:
  1. var v_1, v_2, v_7, v_8, v_10, v_14, v_17, v_21, v_23, v_26, v_31, v_32, v_34, v_38: Integer;
  2.     v_42, v_46, v_51, v_52, v_54, v_58, v_62, v_66, v_71, v_72, v_74, v_78, v_82: Integer;
  3.     v_86, v_91, v_92, v_94, v_98, v_102, v_106, v_155, v_160, v_161, v_166, v_167: Integer;
  4.     v_172, v_173, v_178, v_179: Integer;
  5.     v_4, v_28, v_48, v_68, v_88, v_108, v_120, v_121, v_126, v_127, v_132, v_133: String;
  6.     v_138, v_139, v_144, v_145, v_150, v_151, v_156, v_157, v_162, v_163, v_168: String;
  7.     v_169, v_174, v_175, v_180: String;
  8.     v_9, v_12, v_13, v_16, v_19, v_20, v_24, v_25, v_33, v_36, v_37, v_40, v_41: Char;
  9.     v_44, v_45, v_53, v_56, v_57, v_60, v_61, v_64, v_65, v_73, v_76, v_77, v_80: Char;
  10.     v_81, v_84, v_85, v_93, v_96, v_97, v_100, v_101, v_104, v_105, v_113, v_116: Char;
  11.     v_117: Char;

чем крутить горизонтальный скролл.

По поводу выхода - нет стандартных вопросов о том хотим ли мы выйти, или сохранить результат, а то вдруг случайно закрыли окно. Желательно что бы их можно было убрать в опциях - кому нужно поставит галки что бы не нужные вопросы не задалбывали.

Поиск.... поиск..... поиск с возможностью RegExp ? Нужно кому-нибудь ?

Уже говорили про переменные: вот как понять что это за переменная "v_56" - какой у нее тип, за что она отвечает ?
Вместо этого делать приятно читаемые префиксы, например для Inetger - n или int, для String - s или str, Single, Double, Real - r и т.д.; Ch_v_56 - смотрится куда информативнее, как минимум видно тип Char; или так nV_38 - тип Integer, uS_v_45 - тип UnicodeString.

Если есть поиск - сделать и замену (RegExp ? ;)), не нравится нам скажем переменная "Ch_v_56" - так заменим ее на "Ch_10CharInRegStr" во всем проекте.

Не понравилось:
Что по дефолту грузит последний открытый файл/проект - убрать бы это, сделать например File-> Recent Files/Projеcts -> и здесь уже каждый выберет из 5 до 10 пунктов что из последнего открывал, а эту фишку вынести в опции. Так как если файлы проекта вырастут это увеличит и без того не малое время запуска декомпиля. * IMHO
Что в окне выбора файла для декомпиляции показывает все файлы, а не нужные, они идут как *.bin - соответственно добавить туда фильтры все файлы *.* и *.bin - этот по умолчанию.

Отображение чисел:
По поводу показывать Hex или Dec, можно сделать хитрее, например отображать вот так:
nV_6 := -2147483646; // 0x80000002 | 0xFFFFFFFF80000002 | любая другая инфа
На суффиксы с префиксами не претендую, кому нужно запилить опции с отображением цифр/коммента как $80000002, 80000002h, 0x80000002h и для гурманов #80000002 и т.д.

Еще что-то хотел, но думаю и этого пока хватит.....

Ранг: 75.3 (постоянный)
Статус: Участник

Создано: 28 декабря 2016 19:58 · Поправил: v00doo New!
Цитата · Личное сообщение · #22

vden, мне показалось или шрифт стал больше в последнем билде? Можно тоже на будущие настройку шрифта впихать, ну я думаю это итак запланировано, но пока хоть размер временно менять.
Кстати оповещения вверху у меня лично малость подлагивают, так ли они нужны? Можно их в опцию тоже загнать в будущем?
mysterio пишет:
Уже говорили про переменные: вот как понять что это за переменная "v_56" - какой у нее тип, за что она отвечает ?

Да переименование решило бы проблему, мне кажется не стоит городить, итак глаза порой в кучу когда они списком большим.
У SetArrayLength с параметрами что-то не так.
Code:
  1. v_1 := gvar_24;
  2. v_2 := v_1;
  3. v_2 := v_2 + 1;
  4. v_3 := &gvar_19;
  5. SETARRAYLENGTH();


А, там есть уже тикет на счет этого...
Простите ленивого, все еще не заведу никак акк на гитхабе.


Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 29 декабря 2016 06:02 New!
Цитата · Личное сообщение · #23

Подкину дров:
Возможность отключать всплывающие сообщения, сообщения об ошибках оставить.
Уменьшить высоту меню никак нельзя ? - процентов на 15-25 - как-то высоковато - речь об высоте "полоски" "File Help". Добавить в это самое меню "стандартные" шорткаты: Open - F3, Find/Search - F7 или Ctrl+F, Save - Ctrl+S, Exit - Ctrl+Shift+Alt+Esc+IDDQD+Reset+введите_пинкод и т.д.
За заголовок уже говорил, дополню: из этого "Pascal Script Decompiler"; сделать это: "Pascal Script Decompiler vВерсия [Полный путь к открытому файлу или только имя_файла]". * я за полный путь
Добавить возможность реанализа файла она же переоткрытия, с шорткатом Shift + R или Ctrl + R. Зачем нужно ? Затем что если открыли файл, через какое-то время он нам оказался не нужен, и мы на его место перезаписали другой *.bin - что бы не нажимать опять File -> Open или F3 и выбирать из списка тот же файл, нажимаем Shift + R и файлик переоткрылся без лишних телодвижений.
Возможность быстрого отключения/включения, как и WordWrap - птичкой в контекстном меню, нумерации строк.
Спойлер: Отключать спойлер если количество строк в Var скажем мение 5 и соответственно включить если более.

Ранг: 271.6 (наставник)
Статус: Модератор
CrackLab

Создано: 29 декабря 2016 09:05 New!
Цитата · Личное сообщение · #24

mysterio
вы считаете, что пилить ебауты, шорткеи, префиксы, трей иконки - это именно то, что сейчас необходимо проекту?

| Сообщение посчитали полезным: Kindly, mysterio



Ранг: 246.9 (наставник)
Статус: Участник
RBC

Создано: 29 декабря 2016 12:38 · Поправил: Kindly New!
Цитата · Личное сообщение · #25

SReg
+1

vden
не знаю, будет ли это реквестом или багом, но после экспорта в .pas функции из dll имеют непонятные параметры, например:

function EnumResourceNamesA(Arg0: ?; Arg1: ?; Arg2: ?; Arg3: ?): ? stdcall;
external 'EnumResourceNamesA@kernel32.dll stdcall DelayLoad';

function RunTask(Arg0: ?; Arg1: ?): ? stdcall;
external 'RunTask@ISTask.dll stdcall DelayLoad';

Было бы идеально, если бы декомпиль умел определять, где в функции String, где PChar, Integer, THandle и т.д.


Да и по сути это не Inno Setup Decompiler, a ROPS Decompiler, т.к. я встречал проги с защитными механизмами да и некоторым функционалом в виде пошифрованных ROPS скриптов, аналогичных тем, что использует Inno Setup. Но раз "массовое" его применение в Inno Setup, пусть себе так и называется

Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 29 декабря 2016 14:03 · Поправил: vden New!
Цитата · Личное сообщение · #26

Улучшения интерфейса и все что не критично для открытия и анализа скрипта будет отложено на потом.

Сейчас главная задача сделать качество листинга лучше. Для этого я дорабатываю другой проект (code analyzer) чтобы его анализатор можно было интегрировать сюда. Это даст оптимизации, чистку мусора и прочее.

Kindly пишет:
function EnumResourceNamesA(Arg0: ?; Arg1: ?; Arg2: ?; Arg3: ?): ? stdcall;

В скрипте не указаны типы для аргументов. Со временем, я думаю, это будет решено. При декомпиляции всех методов можно будет отследить какие типы попадают в аргументы.

ps
проблема #2 теперь решена
тут есть список затронутых функций
https://github.com/vdisasm/InnoSetupDecompiler/issues/2

| Сообщение посчитали полезным: v00doo, Kindly



Ранг: 307.7 (мудрец)
Статус: Участник

Создано: 29 декабря 2016 15:44 New!
Цитата · Личное сообщение · #27

Соглашусь с мнением большинства, ведь действительно "Зачем изначально делать "по-людски" - если сразу можно сделать автоваз!?" - кто я такой что бы говорить о целесообразности на этом или подальших этапах.

Риторически говорил:
mysterio пишет: не знаю стоит ли вываливать - вдруг никому не нужно....
ответ всплыл сам собой.

P.S. Новогоднее желание: int вернись! - черт, в слух сказал, не сбудется

| Сообщение посчитали полезным: v00doo


Ранг: 105.8 (ветеран)
Статус: Участник

Создано: 29 декабря 2016 18:51 · Поправил: vden New!
Цитата · Личное сообщение · #28

добавляйте проблемы на github, со временем будет решаться
 eXeL@B —› Софт, инструменты —› Inno Setup Decompiler

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS