XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sacar777

offline
Опыт: 2,024
Активность:
Спаззлер, вопрос касается больше программного языка.
Спаззлер, вопрос касается больше программного.
Разобрал весь его алгоритм работы, кроме одного фрагмента, не могу понять откуда оно берется. Сам не учил С++
mo[1] = "MPQ" + chr(0x1b) + chr(0x20) + chr(0x00) + chr(0x00) + chr(0x00) + x[8:12] + chr(0x01) + chr(0x00) + x[14:28] + c + x[32:]
"с" вот его я и не могу понять. Исходя из кода он берется в этой функции
def _p1(c):
a = [hex(ord(c[0])).replace("0x",),hex(ord(c[1])).replace("0x","&qu​ot;),hex(ord(c[2])).replace("0x",),hex(ord(c[3])).replace("0x","​;")]
return _p2(a[3]) + _p2(a[0]) + _p2(a[1]) + chr(ord(_p2(a[2]))-1)
Например, изначальная карта имеет значения 84 (hex)
после спззлера оно стало 01
По какой системе это исчисляется. Заранее спасибо
П.с. не нашел куда лучше задать этот программный вопрос, но т.к. он относится к вару и протекту спаззлер, решил что академия именно то место.
Старый 10.06.2013, 10:10
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
спаззлер питоновский.
это не исчислается. скорее всего была найдена сумма байт при котором заголовок считывается как битый или равноценно битый. Вывод сделан из того, что такие "равноценно" битые суммы байт могут быть найден почти в любом месте. Другой вопрос - прием поиска такой суммы.
Старый 10.06.2013, 10:25
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
*и тут мне впервые стало страшно за людей использующих протекторы*
Старый 10.06.2013, 10:27
Sacar777

offline
Опыт: 2,024
Активность:
ну как то же можно узнать изначальное число, например утилита ZxZ Despazzler она восстанавливала это число, значит способ есть, не перебором же перебирать все числа)
Старый 10.06.2013, 10:48
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
деспаззлеры работают на обратном алгоритме от спаззлера. один из первых таких деспаззлеров появился тут
Старый 10.06.2013, 10:49
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
Sacar777, цыкл в руки и бесконечное количество итераций
Старый 10.06.2013, 10:56
Sacar777

offline
Опыт: 2,024
Активность:
если бы делать через программу, то да, цикл, но я делаю руками, а каждый раз менять\сохранять и тд долгий процесс для всех возможных комбинации)
Старый 10.06.2013, 10:58
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
цыкл в руки и бесконечное количество итераций
для подбора 4 байт в хексе таким образом потребуется чуть больше 20 лет. брутфорс тут не катит)
я искал алгоритм подмены суммы байт заголовка - но он видимо канул в лету. Найденной информации не хватает чтобы хотя бы предположить, какая закономерность используется для подмены.
Старый 10.06.2013, 11:00
DioD

offline
Опыт: 45,134
Активность:
учитесь обратной разработке, берёте функцию, меняете в ней значения на единичку в рандомных местах, смотрите результат, делайте выводы.
char это виртуальный тип, на самом деле это byte, то есть просто число 0-255
84 даёт 01, смотрите что даёт 85 потом 86 потом 8f потом 90 и так далее, боже мой ну проявите вы хоть немножечко смекалки.
Старый 10.06.2013, 11:01
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
так упороться можно. профит от бестолкового изменения и сравнения маловат. спаззлер независимо от исходного значения меняет байт, на заранее известное число.
у мпку заголовок всегда одного значения.
Старый 10.06.2013, 11:07
Sacar777

offline
Опыт: 2,024
Активность:
обратный подбор тоже не прокатит, сейчас в карте под спраззлером изменил число 01 на другое, к примеру 74. итог при депротекте все же выдало 84. число от чего то зависит, но не известно от чего.
Старый 10.06.2013, 11:14
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
>___<
говорю же - у спаззлера в алгоритме уже стоит на какое значение какой байт менять. и у деспаззлера стоит думать - тоже самое, так как у mpq архивов, коим является карта .w3x заголовок одного значения. но вот если делать смещение на 10 байт вперед, например на 0x2C или 0x2D - то там уже обратное изменение не прокатит, так как в каждой карте байты по этому адресу разные(там техническая информация по карте хранится)
Старый 10.06.2013, 11:18
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:20.