Комментарии 16
inqsoft sign 0f misery позволял программировать это кликами мышкой. Не знаю работает ли он на современных версиях Windows, но раньше спасал кучу времени на подобных задачах.
+1
Как-то кривенько. Не лучше ли было найти/реализовать алгоритм распаковки самостоятельно и к нему уже написать обвес в виде GUI/CLI?
+14
Нет, конечно.
Надстройка над GUI делается за полчаса.
А искать(и уж тем-более реверсить) и реализовывать алгоритм распаковки/запаковки — значительно более долгая задача.
Ну и ключевой вопрос: А зачем?
Ради чего городить забор, если можно быстро и с минимумом затрат реализовать простое и эффективное решение?
Надстройка над GUI делается за полчаса.
А искать(и уж тем-более реверсить) и реализовывать алгоритм распаковки/запаковки — значительно более долгая задача.
Ну и ключевой вопрос: А зачем?
Ради чего городить забор, если можно быстро и с минимумом затрат реализовать простое и эффективное решение?
+1
Это есть в планах. Просто команде нужен был инструмент и быстро. А что именно кривенько?
+1
Попробуйте autohotkey
+2
А файлик Пароль.txt точно должен быть в репозитории? :)
0
Так у этой GUI-утилиты есть параметры командной строки…
Распаковщик.exe <gamedata.db?> [output-directory]
+11
Чувствую себя дураком (. А как вы это нашли?
+1
Вообще гуглом нашел архив. А внутри был Readme.txt…
А если бы не нашел, то рассматривал вариант, который предложил Prototik. Мы же это чисто теоретически да, в научных интересах? :o)
1) распаковал бы exe утилиты или игры, если необходимо. Утилита упакована обычным upx — тут даже навыки никакие не нужны, существует миллион распаковщиков (например, встроенный в PE Explorer).
2) посмотрел бы в IDA (или в другом инструменте), что там и куда вызывается.
Чтобы поправить псевдокод Hex-Rays до вида на картинке потребовалось пара минут. И стало видно, что readme не врет.
А дальше можно разобрать формат архивов (unpack_procedure на картинке).
А если бы не нашел, то рассматривал вариант, который предложил Prototik. Мы же это чисто теоретически да, в научных интересах? :o)
1) распаковал бы exe утилиты или игры, если необходимо. Утилита упакована обычным upx — тут даже навыки никакие не нужны, существует миллион распаковщиков (например, встроенный в PE Explorer).
2) посмотрел бы в IDA (или в другом инструменте), что там и куда вызывается.
Чтобы поправить псевдокод Hex-Rays до вида на картинке потребовалось пара минут. И стало видно, что readme не врет.
А дальше можно разобрать формат архивов (unpack_procedure на картинке).
0
Полученный опыт это здорово, но с практической точки зрения на AutoIt это делается в три строчки (если бы утилита не принимала параметры, как уже заметили). Посмотрите, может еще пригодится.
+1
По поводу того, почему не работало сообщение CB_ADDSTRING, а сообщение WM_SETTEXT срабатывало. Я думаю это внутренний механизм Винды здесь выходит на сцену. Когда сообщение шлется эдит контролу, и оно содержит в себе указатель на память из другого процесса (программа автоматизатор щлет строку распоковщику), то винда сериализует буфер строки и в таргет процессе уже использует адрес буфера, валидный в контексте таргет процесса. На сколько я помню, это было сделано для обратной совместимости со всякими Win95. В случае с CB_ADDSTRING и ComboBoxEx32, возможно, этот механизм не работает.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как мы распаковку игры автоматизировали