Сейчас на форуме: tyns777, bezumchik (+4 невидимых)

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


Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

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

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

-----
В облачке многоточия




Ранг: 54.0 (постоянный), 49thx
Активность: 0.721.1
Статус: Участник

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

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

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




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 05 декабря 2019 15:14
· Личное сообщение · #3

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

-----
В облачке многоточия


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


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 05 декабря 2019 15:39
· Личное сообщение · #4

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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

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

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

-----
2 оттенка серого





Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 05 декабря 2019 22:42
· Личное сообщение · #6

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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 06 декабря 2019 15:25 · Поправил: Boostyq
· Личное сообщение · #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 меняется несколько раз, а используется очень много раз и возможно отсутствие ссылок объясняется этим

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 06 декабря 2019 16:09
· Личное сообщение · #10

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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 06 декабря 2019 16:10
· Личное сообщение · #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




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 06 декабря 2019 16:19 · Поправил: Boostyq
· Личное сообщение · #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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 06 декабря 2019 16:27
· Личное сообщение · #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 ?




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

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

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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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

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




Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 06 декабря 2019 17:42
· Личное сообщение · #16

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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 06 декабря 2019 17:52 · Поправил: reversecode
· Личное сообщение · #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


Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 06 декабря 2019 19:59
· Личное сообщение · #18

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

-----
В облачке многоточия





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 06 декабря 2019 20:31
· Личное сообщение · #19

всяко лучше чем с голыми руками на амбразуру


 eXeL@B —› Вопросы новичков —› HexRays для PowerPC
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати