Сейчас на форуме: Alf, Adler, Rio, vsv1, site-pro (+8 невидимых)

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

Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 25 декабря 2016 20:14 · Поправил: vden
· Личное сообщение · #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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 25 декабря 2016 22:02 · Поправил: Kindly
· Личное сообщение · #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 не составит особого труда разобраться.

-----
Array[Login..Logout] of Life


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


Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

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

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

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

@Kindly
Я сохранил файл. На днях постараюсь изучить.

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



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

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

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




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

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

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

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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 26 декабря 2016 02:28 · Поправил: Kindly
· Личное сообщение · #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.

-----
Array[Login..Logout] of Life




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

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

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

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

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

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




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

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

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

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




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

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

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

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

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

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

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

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


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

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

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

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


Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 26 декабря 2016 20:57 · Поправил: mysterio
· Личное сообщение · #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;


-----
Don_t hate the cracker - hate the code.




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

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




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

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

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

-----
Don_t hate the cracker - hate the code.




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 27 декабря 2016 01:11 · Поправил: v00doo
· Личное сообщение · #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 датой и номером версии; номер версии добавить в заголовок главного окна ?)

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




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

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

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

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

-----
Array[Login..Logout] of Life




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 27 декабря 2016 01:36 · Поправил: v00doo
· Личное сообщение · #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 в хексе бы, без переключения уже, галочку, например какую-нибудь в настройках для отображения чисел, но это все мелочевка.



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

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

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

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

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

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

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



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

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

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

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




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 27 декабря 2016 19:27 · Поправил: mysterio
· Личное сообщение · #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 и т.д.

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

-----
Don_t hate the cracker - hate the code.




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 28 декабря 2016 19:58 · Поправил: v00doo
· Личное сообщение · #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.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 29 декабря 2016 06:02
· Личное сообщение · #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 и соответственно включить если более.

-----
Don_t hate the cracker - hate the code.




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

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

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

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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 29 декабря 2016 12:38 · Поправил: Kindly
· Личное сообщение · #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, пусть себе так и называется

-----
Array[Login..Logout] of Life




Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

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

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

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

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

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

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


Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

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

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

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

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

-----
Don_t hate the cracker - hate the code.


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

Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

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

добавляйте проблемы на github, со временем будет решаться


 eXeL@B —› Софт, инструменты —› Inno Setup Decompiler
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати