141

Re: Низькорівнева всячина

elektryk написав:
0xDADA11C7 написав:

Створюйте окрему тему, докладно опишіть іграшку, чому вона вам цікава, що ви хочете в ній покращити та що ви можете робити для цього (відповідь "А я дивитимусь" не приймається, в зворотній розробці багато роботи і без асемблера)

Свою тему я створювати боюсь, бо попередні швидко опинялися на смітнику. Іграшка називається "King's Bounty-2". Вона і досі в рейтингу найкращих для ДОС. Мене вона приваблює красою алгоритму. Саме алгоритм я хочу видерти з *.ехе файлу. Для цього я хочу опанувати HIEW 6.11. А потім я планую переписати її на ДжавіСкріпт. А перед цим хочу викинути з гри всілякі москалізми.

Який саме алгоритм ви хочете видерти з гри? А спрайти, наприклад, теж треба видерти?

Подякували: leofun011

142

Re: Низькорівнева всячина

0xDADA11C7 написав:

Який саме алгоритм ви хочете видерти з гри? А спрайти, наприклад, теж треба видерти?

Ну, по-перше дякую, що Ви зі мною возитесь. По-друге, гра складається з трьох частин: генерація початкових умов, мандри героя по землях, битви. Ось ці алгоритми мені потрібні. А спрайти в мене вже є.
Якби був такий інструмент, що дозволяв би запускати гру від прериванія до преривания (даруйте за русизми) и висвітлював команди асемблера, які спрацювали, то було б добре. Може hiew дозволяє це робити??

143

Re: Низькорівнева всячина

Є такі засоби -- знежучувачами звуться (debugger), але для початку вам потрібно оволодіти мовою асемблера 8086 та найголовніше -- взаємодією з залізом. Чи готові ви присвятити декілька років свого життя (від 3-х годин на день) для роботи над цією грою? Якщо так, то я вас вчитиму комп`ютерної грахвіки та асемблеру. Я також маю плани на створення ДОС-ігр мовою асемблера.

Подякували: leofun011

144

Re: Низькорівнева всячина

0xDADA11C7 написав:

Є такі засоби -- знежучувачами звуться (debugger), але для початку вам потрібно оволодіти мовою асемблера 8086 та найголовніше -- взаємодією з залізом. Чи готові ви присвятити декілька років свого життя (від 3-х годин на день) для роботи над цією грою? Якщо так, то я вас вчитиму комп`ютерної грахвіки та асемблеру. Я також маю плани на створення ДОС-ігр мовою асемблера.

Скажу чесно: ні, не готовій. Та мені здається, що все простіше. Я продивлявся асемблерівський текст цієї іграшки. Там не так багато команд. Потім я тричі її запускав. і зберігав. Потім в 16 коді шукав відмінності. Їх виявилось надто багато. Якщо їх проаналізувати, то стане зрозуміла генерація начальнох умов. Мені тут скинули один debugger. Але я ще до нього не брався. Боюсь.

145

Re: Низькорівнева всячина

Шановний Дада, давайте я Вам надішлю цю іграшку і Ви переконаєтесь, що вона цікава. На її основі створено багато сучасних.

Подякували: leofun011

146

Re: Низькорівнева всячина

Я в неї навіть колись грав, тож засвідчую -- гра цікава (скидувати не треба -- я сам знайду її). Я погляну на гру впродовж цього тижня, але мені не здається, що там надто все просто. Зворотна розробка завжди складніша за просте написання ПЗ, а зворотна розробка ДОСівської гри вимагає знання залізяччя.

Подякували: leofun011

147

Re: Низькорівнева всячина

У мене є цікава програмка, яка дозволяє побайтово порівнювати два файла. А чи є програма, яка шукає задану байтову послідовність в файлі??

148

Re: Низькорівнева всячина

. А чи є програма, яка шукає задану байтову послідовність в файлі??

HEx редактор, IDA pro

149 Востаннє редагувалося elektryk (02.05.2016 11:34:14)

Re: Низькорівнева всячина

reverse2500 написав:

HEx редактор, IDA pro

Що таке HEx редактор?? Тобто де він водиться?? Скажімо в нортоні він є?? А в FARi??

150

Re: Низькорівнева всячина

У мене в FAR'і можливий лише перегляд у 16ковому форматі, не редагування. Втім, для пошуку заданого фрагмента (в вигляді тексту чи 16кового коду) цього достатньо.

151

Re: Низькорівнева всячина

Що таке HEx редактор??

хекс редактор, а ви про шо подумали ?  :D

152

Re: Низькорівнева всячина

reverse2500 написав:

Що таке HEx редактор??

хекс редактор, а ви про шо подумали ?  :D

Я хотів дізнатися: це окрема програма чи вбудована в якусь??

153

Re: Низькорівнева всячина

Я хотів дізнатися: це окрема програма чи вбудована в якусь??

в UNIX я використовую hexdump, hexcurse
windows WinHex, Ida pro. Тут варто врахувати не лише просто редактувати, а щоб контрольну суму не пошкодити і НЕх редактор вмів сам це все підраховувати, довжину і зміщення і так дальше. Бо буває відредактував, і програма не запускається

154

Re: Низькорівнева всячина

reverse2500 написав:

Я хотів дізнатися: це окрема програма чи вбудована в якусь??

в UNIX я використовую hexdump, hexcurse
windows WinHex, Ida pro. Тут варто врахувати не лише просто редактувати, а щоб контрольну суму не пошкодити і НЕх редактор вмів сам це все підраховувати, довжину і зміщення і так дальше. Бо буває відредактував, і програма не запускається

Тю-ю-ю, яка бяка...

155

Re: Низькорівнева всячина

0xDADA11C7 написав:

Я в неї навіть колись грав, тож засвідчую -- гра цікава (скидувати не треба -- я сам знайду її). Я погляну на гру впродовж цього тижня, але мені не здається, що там надто все просто. Зворотна розробка завжди складніша за просте написання ПЗ, а зворотна розробка ДОСівської гри вимагає знання залізяччя.

Індусику, куди Ви поділися??

Подякували: 0xDADA11C71

156

Re: Низькорівнева всячина

Тут я, реверса2500 не слухайте -- він може і правду каже, але не в тему, бо робота його не відпускає.

windows WinHex, Ida pro. Тут варто врахувати не лише просто редактувати, а щоб контрольну суму не пошкодити і НЕх редактор вмів сам це все підраховувати, довжину і зміщення і так дальше. Бо буває відредактував, і програма не запускається

Стосовно засобів зворотної розробки, які вам потрібні -- дебагера та шістнадцяткового(хекс) редактора вам має бути більш ніж досить. Найкращий 16-ковий редактор для вас це безкоштовний HIEW, з дебагерів я б радив Insight, якщо ви оберете Turbo Debugger, то нічого не втратите. Але я б радив спочатку навчитися писати на асемблері, щоби його розуміти в дебагері. Бо ви не зрозумієте де малюється, а де обчислюється. Просто взяти і порівняти не вийде - зворотна розробка це довгий і тернистий шлях.

У мене є цікава програмка, яка дозволяє побайтово порівнювати два файла. А чи є програма, яка шукає задану байтову послідовність в файлі??

Це все є в HIEW, не вигадуйте зайвих програм.

157 Востаннє редагувалося elektryk (04.05.2016 12:20:45)

Re: Низькорівнева всячина

Я HIEWом як раз і користуюся (версія 6.11). Справа в тому, що добрі люди опублікували *.dat-файл з деякими корисними адресами. Так ось я собі зробив безкінечну кількість робітників і ще дещо.

А Ви гру вже знайшли??

158

Re: Низькорівнева всячина

Викладайте сюди ваш дат файл з деякими корисним адресами, якщо інформація не українською, то сховайте її в спойлер, наприклад:

російська

х*й 3.14зда Джигурда

159 Востаннє редагувалося elektryk (05.05.2016 08:21:45)

Re: Низькорівнева всячина

0xDADA11C7 написав:

Викладайте сюди ваш дат файл з деякими корисним адресами, якщо інформація не українською, то сховайте її в спойлер, наприклад:

російська

х*й 3.14зда Джигурда

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

Ще скажу, що гра написана на паскалі з ассемблерними вставками графіки. Можливо це допоможе?? Адже паскаль строгий. Тобто структура чітко задана. Зразу об'являються константи, потім змінні, потім масиви, потім підпрограми. Тож з ехе-файлом буде простіше розібратись.

Post's attachments

Королевство min.doc 247 kb, 559 downloads since 2016-05-05 

160 Востаннє редагувалося anakin (09.05.2016 23:51:22)

Re: Низькорівнева всячина

Кривенька реалізація rc4 на макросах. Прожорлива. Розумніше обробляти дані окремо, "на стороні", але, все таки, для різного роду строк годне. Параметр _fill у ksa - формує наперед розраховану таблицю на пару з ключем.

macro ksa _key, _fill
{
    virtual at 0
        db _key
        _key_len = $
    end virtual

    rept 256 c:0 \{
        _s\#c = c
    \}

    rept 256 c:0 \{
        virtual at 0
            db _key
            load _k byte from c mod _key_len
        end virtual

        _k\#c = _k
    \}

    _j = 0

    rept 256 c:0 \{
        _j = (_j + _s\#c + _k\#c) mod 256

        rept 256 j:0 \\{
            if j = _j
                _t = _s\#c
                _s\#c = _s\\#j
                _s\\#j = _t
            end if
        \\}
    \}

    if _fill = 1
        rept 256 c:0 \{ db _s\#c \}
    end if
}


macro prga _start, _end, _key
{
    ksa _key, 0

    _j = 0

    repeat _end - _start
        _i = % mod 256

        rept 256 c:0 \{
            if c = _i
                _a = _s\#c
                _j = (_j + _a) mod 256
            end if
        \}

        rept 256 c:0 \{
            if c = _j
                _b = _s\#c
            end if
        \}

        rept 256 c:0 \{
            if c = _i
                _s\#c = _b
            end if

            if c = _j
                _s\#c = _a
            end if
        \}

        rept 256 c:0 \{
            if c = (_a + _b) mod 256
                load _d byte from _start + (% - 1)
                store byte _s\#c xor _d at _start + (% - 1)
            end if
        \}

    end repeat
}
Подякували: 0xDADA11C71