1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Soft Дизассемблирование и декомпиляция программ(игр)

Тема в разделе "Hard & Soft", создана пользователем Mysyk, 30 ноя 2012.

  1. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    gudleifr, дальше тянет пошутить про "карту пиратского клада" (ну, типа надписал и забыл где он находится и ключ от него и т.д. и т.п.). Отсюда можно сделать вывод, что не стоит увольняться к примеру. Или стоит перезаписать свою память приемнику.:) Или, что чаще всего и случается, махнуть рукой и сказать:"Сами разберутся ! Чай, в отличии от нас не 3 класса закончили !" А можно ещё всё в виде блоксхем оформить же на бумаге !:spiteful: Есть ещё много утончённых вариантов ! :shok:

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

    Grue13, Offtop
    ДА. Он бы выразился кратко и сочно.
     
    Последнее редактирование: 1 дек 2012
  2. Scorp Никто и звать меня никак

    Scorp

    Регистрация:
    21 апр 2005
    Сообщения:
    2.955
    Это законченный кусок, я правда забыл скопировать последнюю часть. На 1b никто не прыгает же по условию. 1b это метка 1, и туда делается djnz, то есть декремент и пока в B не будет 0. В общем на самом деле назначение тривиально - печатает на экране текст и потом преобразовывает их в спрайт. Преобразовывает текст в графику, в общем.

    О чем я и говорю.

    ---------- Сообщение добавлено в 16:35 ---------- Предыдущее сообщение размещено в 16:25 ----------

    Я спешил. Ну не, если угодно, могу более законченый пример, у меня их много :)

    Вот ОЧЕНЬ простой (и полезный, в принципе) пример, не привязаный к спец. знаниям (только что откопал в IDA):

    Код:
    HZ1				; CODE XREF CheckMagic+60p
    					; CheckMagic+6Fp ...
    		push	bc
    		pop	hl
    		ld	bc, 0
    		push	bc
    		ld	de, 2710h
    		and	a
    
    HZ2_1					; CODE XREF HZ1+Dj
    		sbc	hl, de
    		inc	c
    		jr	nc, HZ2_1
    		adc	hl, de
    		dec	c
    		ld	de, 3E8h
    
    HZ2_2					; CODE XREF HZ+18j
    		sbc	hl, de
    		inc	b
    		jr	nc, HZ2_2
    		adc	hl, de
    		dec	b
    		ld	(HZ5), bc
    		pop	bc
    		ld	de, 64h
    
    HZ2_3					; CODE XREF HZ+28j
    		sbc	hl, de
    		inc	c
    		jr	nc, HZ2_3
    		adc	hl, de
    		dec	c
    		ld	de, 0ah
    
    HZ2_4					; CODE XREF HZ+33j
    		sbc	hl, de
    		inc	b
    		jr	nc, HZ2_4
    		add	hl, de
    		dec	b
    		ld	(HZ3), bc
    		ld	(HZ0), hl
    		ld	hl, HZ5
    		ld	b, 5
    		ld	c, 30h
    
    HZ2_5					; CODE XREF HZ+49j
    		ld	a, (hl)
    		add	a, c
    		ld	(hl), a
    		inc	hl
    		djnz	HZ2_5
    		ret
    
    HZ5	nop			; DATA XREF HZ+1Dw HZ+3Eo
    HZ4	nop
    HZ3	nop			; DATA XREF HZ+37w
    HZ2	nop			; DATA XREF CheckMagic+63r
    HZ0	nop			; DATA XREF HZ+3Bw
    	nop
    	nop
    
    
     
    Последнее редактирование: 1 дек 2012
    Bato-San нравится это.
  3. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    Т.е. автор "задачи" сам ее не понимает. Извините.

    ---------- Сообщение добавлено в 16:39 ---------- Предыдущее сообщение размещено в 16:36 ----------

    Да верю я, что Вы умеете писать на asm-e...

    P.S. Однажды мне в руки попал CD-диск с какой-то сексуальной энциклопедией. Смотрю, а там файл - "masm". Что, думаю, за фокус? Оказалось: "мастурбация мужская".
     
    Последнее редактирование: 1 дек 2012
  4. Scorp Никто и звать меня никак

    Scorp

    Регистрация:
    21 апр 2005
    Сообщения:
    2.955
    Я автор задачи и мне всё кристально ясно в ней. Что не так?

    Я рад вашим всесторонним знаниям в области мастурбации, какое это отношение имеет к теме?
     
    Лорд Лотар и Bato-San нравится это.
  5. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    1. Тупо считаем метки: t1, t_e, t3, t2, prs. На 1-ю идет ссылка извне (бог с ней), 2-я и 3-я не разрешены. 5-я (для прикола) не описана. Т.е. кусок не замкнут.
    2. Тупо считаем стековые операции. de сохраняется в стеке (перед t2) и не извлекается. Т.е. кусок опять не замкнут.
    3. Слова "и потом преобразовывает их [текст] в спрайт" не соответствуют действительности.
     
    Последнее редактирование: 1 дек 2012
  6. Mysyk Sonic Boom

    Mysyk

    Регистрация:
    31 янв 2008
    Сообщения:
    2.652
    Разве технологии еще не дошли до того, чтобы упростить декомпиляцию(дизассемблирование)? :)
    Из языков программирования я пока знаю Pascal и Delphi. Чувствую что этого недостаточно и надо было знать все С.
    Bato-San, это скорее обратная инженерия. Мне кажется, что не все игры возможно будет восстановить по памяти.
    Grue13, сегодня Фримен что-то в ICQ написал. Такое ощущение, что он критикует все, за что бы я не взялся.
    И еще. Нужны декомпиляторы, которые и на Unix системах запускать можно. Это для того, чтобы запускать их на удаленных серверах, которые можно арендовать в дата-центрах так как они быстрее будут раскопмилировать.
     
  7. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    В смысле: декомпилировать-то можно, но задачу это не упрощает.

    Вообще, вот так вот оно обычно и дизассемблируется. Примерно с такими же словами...

    У Стругацких хорошо писано:
     
    Последнее редактирование: 1 дек 2012
    Bato-San нравится это.
  8. AxXxB неадекват

    AxXxB

    Legacy

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Просто я с ассемблером Z80 никогда не сталкивался и не знаю его, поэтому для меня неочевидно, что 1b - это переход на ближайшую метку назад)

    Подозреваю, что t_e - это выход, t3 - сразу после jr t2, но этого нет, так как Скорпион забыл скопировать последнюю часть. Со стеком та же фигня.
     
  9. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    AxXxB. Именно.
     
  10. AxXxB неадекват

    AxXxB

    Legacy

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    gudleifr, ну так а в чем критика тогда?) Ну забыл и забыл, с кем не бывает. Сам про это сказал к тому же.

    Mysyk, даже если есть хитрые супер-декомпиляторы, все равно код будет не очень читаемым. Попробуй скачать исходники какого-нибудь большого проекта, переименуй все переменные в "int1, int2, char3" и т. д. и удали все комментарии. Нихрена же не понятно будет) Так что декомпилирование не сильно лучше дизассемблирования. Мнемоники ассемблера, к тому же, учатся на раз, что сводит преимущество декомпилирования к минимуму.
     
    Bato-San нравится это.
  11. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    К тому, что кусок не замкнут, и автор не понимает, как он работает. Почему не замкнут и почему не понимает, это другой вопрос.
     
    Последнее редактирование: 1 дек 2012
  12. Mysyk Sonic Boom

    Mysyk

    Регистрация:
    31 янв 2008
    Сообщения:
    2.652
    Я прочитал ту тему про Героев 2 и задумался над альтернативными вариантами решения проблемы. Наверняка можно тот же Chasm переделать уже в других, готовых исходных кодах. Вот только карты то и персонажей с моделями оружия надо делать самому. Напимер Black Mesa Source. Я видел видео где первая карта из Duke Nukem 3D была на Unreal Engine. Использование готовых движков хорошо будет тем, что легче будет сделать модифицированную версию игры, например, добавить серверную часть чтобы Chasm был похож на порты Doom или Quake 1. Хотя все равно потребуется дизассемблировать чтобы получить ресурсы игры. И таким образом игра тоже будет мультиплатформенной.
     
  13. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    "Вот это поворот!"
     
  14. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Листинг дизассемблера PS10.EXE (основной исполняемый файл CHASM) занимает около ста тысяч строк. Есть герои?
     
    Лорд Лотар нравится это.
  15. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    Это очень мало. Наверное, самое интересное "где-то рядом". Но там, скорее всего, есть и более интересная фича: нигде не описанный интерпретатор внутреннего проблемно-ориентированного языка.
     
  16. AxXxB неадекват

    AxXxB

    Legacy

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    MisterGrim, был бы интерес и очень много свободного времени, то глядишь и через пару лет что-нибудь бы родилось) Это я в том смысле, что любой может в принципе разобрать что угодно при наличии двух этих условий, будь там хоть миллиард строк. А у Mysyk'a, похоже, есть и то, и другое, так что вдруг у него что-то получится. Правда, я в этом сомневаюсь, но что в конце концов значит мое субъективное мнение)
     
    Mysyk нравится это.
  17. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    Сколько можно повторять эту чушь? Учите матчасть!
     
    Последнее редактирование: 1 дек 2012
    radzh нравится это.
  18. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Сложность при разборе растёт не в арифметической, а в геометрической прогрессии.

    Не путайте разбор одного однозначно локализованного куска с разбором целой программы.

    Сам когда-то довольно долго просидел над разбором Boot Block'а авардовского биоса. А там всего-то восемь килобайт кода.
     
    Bato-San нравится это.
  19. AxXxB неадекват

    AxXxB

    Legacy

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    Какую чушь? Что люди могут разобраться в коде, сгенерированным дизассемблером? И это я вроде бы первый раз сказал, почему "повторять"?)
     
  20. gudleifr

    gudleifr

    Регистрация:
    16 сен 2006
    Сообщения:
    2.592
    AxXxB, вы, вслед за коллегой, повторили, что "объем значения не имеет". Я там выше цитатку кинул.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление