Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› HexRays для PowerPC
Посл.ответ Сообщение


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 5 декабря 2019 14:06 · Поправил: Boostyq New!
Цитата · Личное сообщение · #1

Привет, есть исполняемый файл 5мб для старой игры на WIi, в dol формате
В иде загружается если выставить как бинарный файл с процессором PowerPC Big-Endian 64-bit (ppc)
Я знаю, что год назад уже кто-то спрашивал, собственно хочется узнать не изменилась ли ситуация с приватностью иды с таким декомпилятором, потому что сейчас им особо и декомпилировать нечего кроме игр?
Ну или если знаете что-нибудь другое нормальное, смотрела этот плагин https://github.com/gibbed/ppc2c, но это вовсе не декомпилятор, retdec написано что поддерживает только 32-битный ppc
Главное чтобы показывало достоверно как хексрейс, потому что например гидра для мипса такой бред выдавала, что приходилось руками из асма разбирать


Ранг: 54.5 (постоянный)
Статус: Участник

Создано: 5 декабря 2019 14:23 · Поправил: SDK New!
Цитата · Личное сообщение · #2

Boostyq пишет:
ситуация с приватностью иды с таким декомпилятором

у китайцев есть на торенте hexreys разных версий - но торренты мёртвые.
можете найти их через их китайский поисковик там будет китайское хранилище торрентов скачать торренты и посмотреть что там в нутри
и от туда найдёте название версии и файлов и дальше своим ходом год за годом найдете приватную версию. на других сайтах или ftp или облоках обменниках\попробуйте я так находил много того чего нет в свободном доступе.


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 5 декабря 2019 15:14 New!
Цитата · Личное сообщение · #3

Ну я пробовала подобное, на каком-то китайском сайте описывалось как установить хексрейс и вроде говорилось про powerpc, и на скрине было имя установочника, но это оказалась старая версия и вовсе без powerpc

| Сообщение посчитали полезным: SDK



Ранг: 669.3 (! !)
Статус: Участник
CyberMonk

Создано: 5 декабря 2019 15:39 New!
Цитата · Личное сообщение · #4

Здесь была тема "Запросы на декомпиляцию, требуется листинг HexRays", можно оформить запрос, тему найти по поиску не смог, может кто помнит название темы ..


Ранг: 264.8 (наставник)
Статус: Участник

Создано: 5 декабря 2019 21:57 New!
Цитата · Личное сообщение · #5

Мало того, что пиратского нет, ppc32 и ppc64 это два разных декомпиля у лучей.


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 5 декабря 2019 22:42 New!
Цитата · Личное сообщение · #6

mak, запросы тут вряд ли помогут, потому что ида именно интерактивный декомпилятор, ей часто нужно помогать с x86, а уж с ppc я вообще представить не могу, человека напрягу только, а толку мне вовсе не будет


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 06:12 New!
Цитата · Личное сообщение · #7

функи все ида видит при загрузки файла ?
что бы ручками не разбирать
ну давай сделаю выхлоп всего а там посмотришь


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 15:25 · Поправил: Boostyq New!
Цитата · Личное сообщение · #8

К сожалению не получается подготовить файл ._.
Я сделала все что могла, сконвертировала в elf чтобы легко загружалось и были правильные секции, выбрала расширение Paired Singles чтобы ида разобрала неизвестные инструкции с плавающей точкой, стала смотреть и оказалось что ссылки на строки хоть и работают, но на очень малое колво, те что мне были интересны были без ссылок
Дальше стала проставлять функции что не распознались и заметила кучу использования r13 вида "r13, -0x6C48", оказалось это что-то вроде некой базы, которая не меняется во всей программе и используется для рассчетов, нашла инициализацию
Code:
  1. .text.0:80006304                 lis r1, -0x7F9D # 0x80639C58
  2. .text.0:80006308                 ori r1, r1, 0x9C58 # 0x80639C58
  3. .text.0:8000630C                 lis r2, -0x7F9D # 0x80630F00
  4. .text.0:80006310                 ori r2, r2, 0xF00 # 0x80630F00
  5. .text.0:80006314                 lis r13, -0x7F9E # 0x8062BA60
  6. .text.0:80006318                 ori r13, r13, 0xBA60 # 0x8062BA60

Поставила в настройках анализа SDA (r13) = 0x8062BA60, и нифига, и так и сяк жмакала Reanalyze program, сработало только если прямо после открытия остановить анализ и выставить значение, секцию еще одну прилепила, потому что эти адреса-то вообще за пределы ссылаются (но видимо всегда с отрицательным смещением, наверное там какие регионы еще есть создающиеся чем-то еще)
r1 это похоже стек (сразу говорю что я ничего не знаю про ppc), и с ним вроде ничего делать не нужно
А с r2 я похоже ничего не могу сделать, под него нет слота в настройках (или разве что это и есть TOC) и никак нельзя задать значение регистра как в гидре, но в отличии от r13 r2 меняется несколько раз, а используется очень много раз и возможно отсутствие ссылок объясняется этим


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 15:35 · Поправил: reversecode New!
Цитата · Личное сообщение · #9

ида последняя 7.2 с паблика?
ельф файл уже давай


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 16:09 New!
Цитата · Личное сообщение · #10

Да даю я >.< Там же куча нерешенных проблем, сейчас надекомпилишь мне только половину, и криво окажется, а попытка то одна
Если высставить r2 как в первой инициализации, то вообще почти все ссылки на r2 пропадают, что кстати нехорошо сделано, потому что непонятно верно они разрешились или нет
Однако ссылки на нужные строки все равно не появляются, не мог же компилятор просто так их навставлять, потому что в той же игре на PC они используются


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 16:10 New!
Цитата · Личное сообщение · #11

оно не резолвит потому что выходит за пределы сегментов в файле

_text_0:80006304 000 lis r1, -0x7F9D
_text_0:80006308 000 ori r1, r1, 0x9C58
_text_0:8000630C 000 lis r2, -0x7F9D
_text_0:80006310 000 ori r2, r2, 0xF00 # 0x80630F00
_text_0:80006314 000 lis r13, -0x7F9E
_text_0:80006318 000 ori r13, r13, 0xBA60 # 0x8062BA60

0x8062BA60 таких уже нет в файле
или конвертилка не правильная
или как то в игре оно цепляется по другому
хз какой там импорт експорт

Добавлено спустя 3 минуты
кстати это обчный ppc32 а не 64


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 16:19 · Поправил: Boostyq New!
Цитата · Личное сообщение · #12

Как я написала ранее, если высставить r2 и r13 прямо после открытия файла, то все будет работать нормально
Да там нет таких адресов, но я и не видела туда обращений, смещение всегда корректирует адрес до того что внутри игры, это, как я понимаю, сделано просто чтобы смещение влезало в 16-бит, поэтому адрес где-то в конце, ну или там должны быть еще секции
Насчет конвертации там отдельная эпопея была, в итоге пришлось скомпилить какие-то сорсы с гитхаба
А ссылки на строки не работают, потому что они рассчитываются относительно (это я про те, которые мне интересны), и это наверное никак не решить, это просто компилятор так сделал, а ида не подсвечивает к сожалению
Я думала, что это вот ссылка на текст, на самом деле это просто запись базы
Code:
  1. .text.1:8024089C                 lis r31, aBigopen_c@h # "BIGopen.c"
  2. .text.1:802408A8                 addi  r31, r31, aBigopen_c@l # "BIGopen.c"

А уже само обращение происходит ниже
Code:
  1. .text.1:8024090C                 addi r6, r31, 0 ; это обращение к BIGopen.c
  2. .text.1:80240914                 addi r4, r31, 0x3F ; это и есть та строка которую я искала
  3. .text.1:80240918                 addi r3, r31, 0x53 ; еще одна

Что-то вроде оптимизации обращения к нескольким близлежащим адресам, чтобы не рассчитывать каждый через lis и addi, жаль что ида такое не просчитывает
Поэтому наверное остается только все функции, которые не распознались проставить
А насчет разрядность не знаю, когда открывала dol еще файл, он открылся только в Big-Endian 64-bit


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 16:27 New!
Цитата · Личное сообщение · #13

_text_1:8024090C 110 addi r6, r31, 0
_text_1:80240910 110 stw r3, (dword_80604014 - 0x80603EE4)(r4)
_text_1:80240914 110 addi r4, r31, (aUnableToOpenFi - 0x804A30A0) # "Unable to open file"
_text_1:80240918 110 addi r3, r31, (aBigGstGearfile - 0x804A30A0) # "BIG_gst.gearFile != NULL"
_text_1:8024091C 110 bne loc_8024092C

Добавлено спустя 2 минуты
какой правильный r13 ?


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 16:33 · Поправил: Boostyq New!
Цитата · Личное сообщение · #14

Ну я ставлю 0x8062BA60, кстати у тебя похоже ида умеет рассчитывать такие смещения, у меня нет комментариев таких
Быстренько приобрела 7.2 Она гораздо лучше распознает функции, вообще почти нет пробелов, а вот строки некоторые не распознала совсем, при чем в списке строк они есть, а как тип данных не выставлены, но если сделать вручную и затем нажать реанализ, то тогда даже ссылки через смещения показывает, круто
Еще плюсом идет то, что не надо пререывать анализ вначале, а там есть сразу настройка регистров r13 и r2 перед анализом, и даже дополнительно подписано


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 16:46 · Поправил: reversecode New!
Цитата · Личное сообщение · #15

щас перегружу с начала с r13

Добавлено спустя 4 минуты
надо надо
после r13
надо C жать там где не расспозналось


Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 17:42 New!
Цитата · Личное сообщение · #16

Кстати насчет кривого конвертера вполне может быть, учитывая, что я еще пока фиксила ошибки компиляции допустила один баг
Там было elf_offset += -(-(section[i].size) & -(0x100)); что не компилится в C++, поэтому я заменила на ~, а нужно было на ~val + 1
Сейчас исправила, но никакой разницы не увидела, по прежнему r13 и r2 за пределами, да и раньше же было правильно, так что не знаю на что это влияет


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 17:52 · Поправил: reversecode New!
Цитата · Личное сообщение · #17

самая большая проблема сейчас это пролог функции ppc специфичные
который никак не распознался
и из за него сьедаются аргументы при декомпиляции

Добавлено спустя 1 минуту
в лог нужно было вывести итоговый ельф офсет при конвертации
и узнала бы что там да как

Добавлено спустя 53 минуты
// nfuncs=21315 queued=20010 decompiled=20010 lumina nreq=0 worse=0 better=0
#error "There were 9 decompilation failure(s) on 20010 function(s)"

| Сообщение посчитали полезным: Boostyq



Ранг: 89.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 19:59 New!
Цитата · Личное сообщение · #18

Спасибо конечно reversecode, не уверена насколько мне это поможет, хотя гидра вообще ерунду какую-то пишет при работе с плавающей точкой


Ранг: 1042.1 (!!!!)
Статус: Участник

Создано: 6 декабря 2019 20:31 New!
Цитата · Личное сообщение · #19

всяко лучше чем с голыми руками на амбразуру
 eXeL@B —› Вопросы новичков —› HexRays для PowerPC

Видеокурс ВЗЛОМ