» TeamX (Архив Форума)«


Форум TeamX » Исследования » Декомпилятор

Переход по темам
<< Пред. След. >>
Единственная страница этой темы

 
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор и сырцы к нему доступны по

http://homepages.atnet.ru/drony/int2ssl.rar

Умеет декомпилировать скрипты от Fallout2 в сырцы пригодные для BIS-ова компилятора.


Отправлено: 18:46 - 21 Апр., 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Скажу одно: работает! Проверено на подопытном Клинте.
Иностранцам сообщать будешь?

Отправлено: 22:41 - 21 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Доверю это дело тебе

Отправлено: 5:32 - 22 Апр., 2005
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

А куда декомпилируемый скрипт класть,чтобы он декомпильнулся?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 11:46 - 22 Апр., 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

... И мпортные вары видны корректно. А что с Ф1? Там есть особенности, в частности, attack...

Отправлено: 15:17 - 22 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

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

Если надо - могу доделать под декомпиляцию скриптов от Ф1.

Отправлено: 16:29 - 22 Апр., 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Очень надо. Только с Алхимиком спишись. Он много в этом направлении нарыл.

Отправлено: 17:35 - 22 Апр., 2005
Raven
Пользователь

Откуда: Владик
Регистрация: Февр. 2004

Всего: 408 сообщений

Anchorite, спасибо. Сильная штука. Скрипт покера на 60кб декомпильнула один в один.

Отправлено: 15:42 - 23 Апр., 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Сообщил забугоровцам, но ответов пока нет. Неужто не заметили?

Отправлено: 19:43 - 23 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлен до версии 1.01
Исправлен баг с critter_attempt_placement - выдавал critter_attemp_placement.
Спасибо Tehnokrat-у.

Отправлено: 8:51 - 24 Апр., 2005
Alchemist
Модератор

Откуда: Арзамас-17
Регистрация: Дек. 2004

Всего: 298 сообщений

2Anchorite und Wasteland Ghost:
Информацию по всем известным мне грабелькам (что не так уж много) отослал. Проблемы с attack на самом деле не существует. Просто в исходниках от BIS всюду используется вот такой макрос:
#define attack(WHO)  attack_complex(WHO,0,1,0,0,30000,0,0).
У разработчика опкода с именем attack просто нет. Это меня с толку Noid'овский подход сбил.

Коли появится декомпилер для F1, то я, когда освобожусь, в первую очередь нарисую парсер исходников для возврата имён скриптовых переменных (если были незадействованные импорты). Обработкой одного скрипта этого не решить.

Сегодня, может ещё сделаю глубокий тест декомпилятора. Очень способствует.

(Отредактировал(а) Alchemist - 9:51 - 24 Апр., 2005)

-----
/// What'ya be sain'? Vault 100+? We need nothing o'that!

Отправлено: 9:49 - 24 Апр., 2005
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Duble2:
А куда декомпилируемый скрипт класть,чтобы он декомпильнулся?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 16:36 - 24 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

2binyan:
Где лежит там и оставь.

Просто имя декомпилируемого скрипта надо передать в качестве параметра для int2ssl.exe



(Добавление от 17:37 - 24 Апр., 2005.)


2Alchemist:
Вообще-то в Fallout2 есть два опкода в которых встречается слово attack:

O_ATTACK_COMPLEX - 0x80D0h - attack_complex
O_ATTACK - 0x80DDh - attack

У обоих 8 аргументов.
Возвращаемых значений - нет.
Чем различаются - не знаю



Отправлено: 17:32 - 24 Апр., 2005
Alchemist
Модератор

Откуда: Арзамас-17
Регистрация: Дек. 2004

Всего: 298 сообщений

Упс. Точно я у Noid'а плохого набрался, числил O_ATTACK как "attack2". Надо будет код поправить.
Тем не менее даже в первом Fallout используется исключительно O_ATTACK_COMPLEX. То есть 0x80D0. Хотя работают оба опкода, на первый взгляд, совершенно одинаково.

-----
/// What'ya be sain'? Vault 100+? We need nothing o'that!

Отправлено: 18:31 - 24 Апр., 2005
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Цитата:
Quote: from Anchorite on 17:32 - 24 Апр., 2005
2binyan:
Где лежит там и оставь.

Просто имя декомпилируемого скрипта надо передать в качестве параметра для int2ssl.exe


В смысле в качестве параметра?Где его прописать?

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 21:09 - 24 Апр., 2005
Alchemist
Модератор

Откуда: Арзамас-17
Регистрация: Дек. 2004

Всего: 298 сообщений

2binyan:
В командной строке всё это прописывается:
int2ssl.exe путь_к_скрипту\имя_скрипта.int

Результат будет лежать в той же директории, что и сам скрипт.

-----
/// What'ya be sain'? Vault 100+? We need nothing o'that!

Отправлено: 21:46 - 24 Апр., 2005
Alan Killenger
Пользователь

Откуда: Россия, Ижевск
Регистрация: Июль 2004

Всего: 404 сообщения

Классный декомпилятор. Единственное - визуальное форматирование кода просто убивает. Долго в исходниках править чтобы назначить свое?

-----
hit me, nail me, make me god

Отправлено: 0:58 - 25 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Что не устраивает-то?

Отправлено: 5:28 - 25 Апр., 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Действительно, в чём проблема? ИМХО, всё олично. И ничем, кстати, не отличается от БИСовых исходников.

Отправлено: 14:25 - 25 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлен до версии 1.2

Теперь он умеет декомпилировать скрипты от Fallout 1. (надеюсь правильно).

Также добавлен ключик позволяющий заменить табуляции в отступах на указанное число пробелов.


Доступен по прежднему месту:

http://homepages.atnet.ru/drony/int2ssl.rar

Отправлено: 20:39 - 25 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлен до версии 1.3

Добавлена обработка объявленных, но не реализованных функций.

URL тот же.

Отправлено: 20:25 - 27 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлен в очередной раз до версии 1.31.

Исправлен небольшой баг с ключиком -s.

Отправлено: 5:44 - 28 Апр., 2005
Alan Killenger
Пользователь

Откуда: Россия, Ижевск
Регистрация: Июль 2004

Всего: 404 сообщения

Цитата:
Также добавлен ключик позволяющий заменить табуляции в отступах на указанное число пробелов.

Да. Я имел в виду именно горизонтальное выравнивание. Мелочь, но приятно.

-----
hit me, nail me, make me god

Отправлено: 1:33 - 29 Апр., 2005
Alchemist
Модератор

Откуда: Арзамас-17
Регистрация: Дек. 2004

Всего: 298 сообщений

2Anchorite:
Есть suggetion по поводу ключика -dump. Хотелось бы, чтобы он вёл себя так же, как в бэте. Ибо дамп скрипта обычно смотрят, если полноценная декомпиляция невозможна. В данный же момент дампинг, по сути, возможен только для тех скриптов, которые и так нормально декомпилируются.
Проверь, скажем, на файлике, который Бастер кидал в рассылку.

(Отредактировал(а) Alchemist - 21:49 - 29 Апр., 2005)

-----
/// What'ya be sain'? Vault 100+? We need nothing o'that!

Отправлено: 21:37 - 29 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Пришли, если не сложно. У меня его нет.

Отправлено: 21:42 - 29 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлен до версии 1.4

Добавлена обработка неверного числа аргументов для процедур (ключики -a и -b) .

В планах реализовать декомпиляцию скриптов с уж "совсем нестандартным Startup code". Честно говоря меня удивляет как они вообще работают.

Отправлено: 16:03 - 30 Апр., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Декомпилятор обновлени до версии 1.5

Теперь он стал еще более "всеядным".
Также исправлен мелкий недочет - переменные не определялись как импортированные при полном отсутствии в скрипте глобальных переменных.

Отправлено: 12:18 - 15 Мая, 2005
Dioron
Пользователь

Откуда: Россия
Регистрация: Дек. 2004

Всего: 9 сообщений

Вещь хорошая! Декомпилит. Вопрос такой это нормально что он убивает #include и #define и еще в как в командной строке прописывать ключи
int2ssl.exe my_script.int -d


-----
Оставь надежду
Всяк сюда входящий.

Отправлено: 12:30 - 17 Июня, 2005
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

>>Вопрос такой это нормально что он убивает #include и #define

Ты просто не понимаешь суть того, что есть #include и #define. Декомпилятор ничего не убивает, а просто выдаёт скрипт, где
#define one 1 // для примера
уже заменено. Вместо обозначений подставляются значения


-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 19:41 - 17 Июня, 2005
Mynah
Модератор

Откуда: Пермь
Регистрация: Окт. 2004

Всего: 469 сообщений

Просто поделюсь полезной информацией.
В Fallout Script Editor (aka FSE) 1.5 есть функция - "Convert Noid->Iplay".
Дак вот, если прогнать скрипт, декомпиленный int2ssl через эту функцию, он принимает человеческий вид, показывает большинство макросов и делает все include и define. Остаётся заменить только CheckKarma, GetReaction и inc_xxxx_critter. Потом исправлять скрипт - одно удовольствие :)

-----
Scio me nihil scire

Отправлено: 21:12 - 17 Июня, 2005
Alan Killenger
Пользователь

Откуда: Россия, Ижевск
Регистрация: Июль 2004

Всего: 404 сообщения

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

-----
hit me, nail me, make me god

Отправлено: 22:44 - 4 Авг., 2005
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

А ты пропусти исходник скрипта через препроцессоор, но не компилируй и все увидишь.

А на самом деле эта процедура просто определена в одном из включаемых  тобой h-файлов. В каком точно - не помню.

Отправлено: 5:41 - 5 Авг., 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

party.h

Отправлено: 9:47 - 5 Авг., 2005
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Заметил такой косяк при декомпилировании скрипта с помощью int2ssl:

В файле depolva.int одна из строк декомпилировалась как:

LVar1 := LVar6 (60 * 10) / 10;

Довольно непонятная конструкция, особенно учитывая то, что нойдовский компиль вывел следующее:

LVar2 := LVar7 % (60 * 10) / 10;

Однако, косяк.

Отправлено: 13:01 - 3 Сент., 2006
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Это в какой функции?
И какая версия декаомпилятора?

Отправлено: 8:37 - 4 Сент., 2006 | ИСПРАВЛЕНО: Anchorite - 8:38 - 4 Сент., 2006
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

Короче, вот что выдает int2ssl (v. 1.52):

procedure CountDown
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
variable LVar3 := 0;
variable LVar4 := 0;
variable LVar5 := 0;
variable LVar6 := 0;
LVar2 := game_time - global_var(149);
LVar6 := 600 + (600 + (600 + 600)) - LVar2;
LVar5 := 600 + (600 + 600) - LVar2;
LVar4 := 600 + 600 - LVar2;
LVar3 := 600 - LVar2;
if (global_var(global_var(149)) != 0) then begin
display_msg(message_str(146, 100));
end
if (LVar2 < 600) then begin
LVar0 := LVar6 / (60 * 10);
LVar1 := LVar6 (60 * 10) / 10;


а вот что получается с декомпилем Нойда:

procedure CountDown
begin
 variable LVar1 := 0;
 variable LVar2 := 0;
 variable LVar3 := 0;
 variable LVar4 := 0;
 variable LVar5 := 0;
 variable LVar6 := 0;
 variable LVar7 := 0;

 LVar3 := op_game_time() - op_global_var(149);
 LVar7 := 600 + (600 + (600 + 600)) - LVar3;
 LVar6 := 600 + (600 + 600) - LVar3;
 LVar5 := 600 + 600 - LVar3;
 LVar4 := 600 - LVar3;
 if (op_global_var(op_global_var(149)) != 0) then
   op_display_msg(op_msg_string(146, 100));
 if (LVar3 < 600) then
 begin
   LVar1 := LVar7 / (60 * 10);
   LVar2 := LVar7 % (60 * 10) / 10;  

Отправлено: 18:12 - 4 Сент., 2006
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

1.52 - я уже забыл когда в последний раз им пользовался

http://anchorite2001.narod.ru/int2ssl_1.54.rar

Отправлено: 13:25 - 5 Сент., 2006
Perceptron
Модератор

Откуда: Ivanovo
Регистрация: Май 2003

Всего: 502 сообщения

А в закромах TeamX до сих пор 1.52. Ай-яй-яй-яй-яй-яй. :)

Отправлено: 19:06 - 5 Сент., 2006
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Anchorite

Есть ли такая функция в декомпиляторе при декомпелировании он не декомпелировал лишние  end
Как у Noid
Пример

Декомпелятор Noid

if (local_var(4) == 0) then
   display_msg( mstr(102) );
 else
   display_msg( mstr(103) );

Декомпелятор int2ssl

if (local_var(4) == 0) then begin
   display_msg( mstr(102) );
end
 else begin
   display_msg( mstr(103) );
end

Я декомпелирую скрипты fallout1 и если бы он декомпелировал как Noid то очень бы облегчило чтение скрипта




Отправлено: 16:05 - 5 Июля, 2007
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Anchorite

Будет ли в декомпилятор добавлены новык функции из sfall'а?

Отправлено: 16:52 - 12 Янв., 2008
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Сам я добавлять ничего не стану, т.к. давным давно отошел от дел.
Сырцы декомпилятора лежат на сайте. Добавь нужный тебе функционал самостоятельно.

Отправлено: 23:05 - 13 Янв., 2008 | ИСПРАВЛЕНО: Anchorite - 8:19 - 13 Фев., 2008
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Как только разберусь со всеми делами - обязательно добавлю совместимость с sfall.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 0:23 - 14 Янв., 2008
 

Переход по темам
<< Пред. След. >>
Единственная страница этой темы


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com