IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Обсуждение программ (http://www.imho.ws/forumdisplay.php?f=3)
-   -   [FreeWare] Разбор 3х одинаковых программ и поиск их версий (1.0, 1.1 и 1.2) (http://www.imho.ws/showthread.php?t=147990)

FirstPro 04.03.2014 15:37

Разбор 3х одинаковых программ и поиск их версий (1.0, 1.1 и 1.2)
 
Здравствуйте. Не знаю в какой раздел написать, переместите пожалуйста.
Мне нужна помощь в ассемблере. Нужно сравнить 3 практически одинаковых файла (.ехе), в каждом из них есть версия программы (1.0, 1.1 и 1.2). Открывал в WinHEX, там этой версии нет (в читаемом виде), думаю нужно искать в ассемблере. Сам я асм читать не умею, лишь пробовал запускать в OllyDebug и сравнить, но толком ничего не выяснил.
Ссылка на программы в архиве (это игра):
Нажмите здесь, чтобы увидеть текст полностью
_https://www.dropbox.com/s/41jb8i36pfgi620/Game%201.0%20%2B%201.1%20%2B%201.2%20ver.rar

(в архиве сначала запустите .bat файл (чтобы задать новую директорию для игры), а уже потом любой .exe)
Версия программы появляется в нижней части экрана, прямо во время загрузки игры. Т.е. перебирать большой объем информации не нужно, все в самом начале.
Может ли кто-нибудь помочь?

Merlin Cori 04.03.2014 15:50

Первый и главный вопрос ЗАЧЕМ?

FirstPro 04.03.2014 15:54

Ну я поддерживаю эту старенькую (2006г) игру на торрентах, онлайн все еще стабилен. Но для улучшения игры нужно научиться изменять ее версию (в обозревателе игр нельзя зайти в игру более старой\новой версии), а это даст возможность добавлять все новые и новые дополнения (новые автомобили, детали для редактора карт и т.п.). Апдейтер я уже написал, а вот изменить версию игры у меня знаний не хватает...
PS: изменить ее можно, т.к. последняя версия 1.2 уже не от разработчиков, скорее фан патч.

Merlin Cori 04.03.2014 16:34

ээээ... т.е. вы полагаете, что для изменения версии программы достаточно перебить ее номер в exe-файле? :eek::eek::eek:

FirstPro 04.03.2014 16:42

Дело только в файле, у меня их сейчас 3 штуки. Изнутри они практически одинаковые, изменяются только некоторые участки. Пока-что я не смог узнать в каком месте можно изменить версию. Думаю что версия загружается в память либо где-то в ресурсах. В общем я новичок, может кто и подскажет.

Merlin Cori 04.03.2014 16:45

насколько они одинаковые можете проверить выполнив команду в консоле
fc /b file1 file2
где file1 и file2 ваши програмки
количество различий вас неприятно удивит

FirstPro 04.03.2014 16:59

Ну как я понял у них разница в размере, хотя основные участки кода идентичны.

Merlin Cori 04.03.2014 17:00

Цитата:

Сообщение от FirstPro (Сообщение 1775768)
хотя основные участки кода идентичны.

из чего вы это заключили?

FirstPro 04.03.2014 17:08

Запустил в консоли вашу команду, там не так много адресов в конце. А сам код смотрел в WinHEX, везде одно и тоже (на глаз). Но суть моего вопроса в другом, ведь я не могу найти цифру версии программы. Думаю что нужно анализировать ассемблер, вот и интересуюсь.

Merlin Cori 04.03.2014 17:22

Вложений: 1
FirstPro, в файле версии нет

P.S. Могли бы и сами посмотреть

Borland 04.03.2014 18:26

Цитата:

Сообщение от FirstPro (Сообщение 1775768)
разница в размере, хотя основные участки кода идентичны

:ржать:
Если «разница в размере» более, чем в 100 байт - ни о какой «идентичности» речь уже идти не может в принципе. Разница в пару десятков байт даже при совпадении размера - это уже ОЧЕНЬ серёзно, как правило.
«Основные участки кода» - совпадают у очень многих программ для Windows в скомпилированном виде. Для программ под .net - вплоть до 90%...
Если приспичило определять версию файла, в котором она не прописана в качестве PE-ресурса - самым надёжным методом является вычисление контрольной суммы (hashsum). md5, sha256 - не суть важно...

FirstPro 04.03.2014 18:40

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

Alex Dark 04.03.2014 19:10

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

я в ассемблере не силён, но пример на паскале (немного грубоватый)
а:='2.3'
b:=2.3

Разницу чувствуешь?


А так?
d:=2
e:=3
ver:=d+e/10

Ты не телепат, угадывать как разработчик записал версию проги.
Хотя декомпилятор ни кто не отменял

Merlin Cori 04.03.2014 19:54

Alex Dark,

Цитата:

Сообщение от Alex Dark (Сообщение 1775777)
Хотя декомпилятор ни кто не отменял


Цитата:

Сообщение от FirstPro (Сообщение 1775759)
cам я асм читать не умею,

:rolleyes:

Alex Dark 05.03.2014 06:49

Merlin Cori, одно другому не мешает.
Я не зная ассемблера написал же калькулятор (именно написал, а не с инета скачал) когда меня знакомый попросил (к стати, тогда и инетом особо не воспользоваться было, роскошь была). Из всех источников у меня был его конспект и в институте ему выдали дискету с ассемблером и какой то справочник с командами в виде текстовика.

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

FirstPro 05.03.2014 17:09

Цитата:

Сообщение от Alex Dark (Сообщение 1775784)
под декомпилятором искал переменную

Собственно это мне и нужно. Главное, что найти эту переменную возможно, это доказывает версия 1.2 (официально не выходила). Я пробовал в OllyDbg искать по памяти, но толи не нашел, толи ее там нет. Основы ассемблера не знаю и найти переменную при загрузке игры не могу, хотя знаю где она отображается (находил в WinHEX что то типа "Версия: *.*", под * как раз и есть версия, подставляется туда откуда-то). Может вы сможете мне помочь?

Alex Dark 06.03.2014 22:01

Цитата:

Сообщение от FirstPro (Сообщение 1775790)
Может вы сможете мне помочь?

Боюсь что нет. Просто жаль терять впустую время.

Ещё лет 15-20 назад мне это было бы интересно.
А сейчас, имея "опыт ковыряния" + опыт декомпилирования (я при этом знал, на чём написана прога и чем её декомпилировать, а не ассемблером как у тебя) я понимаю что это не совсем удачная идея.

Поверь на слово, смотреть под ассемблером 2-3 килобайта кода геморно.
А три метра как у тебя - проще соседский Wifi-роутер по WPA2 взломать из принципа.

FirstPro 09.03.2014 09:58

Цитата:

Сообщение от Alex Dark (Сообщение 1775816)
Боюсь что нет. Просто жаль терять впустую время.

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


Часовой пояс GMT +4, время: 17:25.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.