Автор Тема: Hex-Rays  (Прочитано 8524 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Timmy!

  • Пользователь
  • Сообщений: 87
  • Пол: Мужской
  • Livin' a lie!! TIMMY!
    • Просмотр профиля
Hex-Rays
« : 10 Декабрь 2009, 02:06:30 »
До меня дошла информация, что разработчики IDA разработали для своего дизассемблера плагин нового поколения - HexRays. Разработчики заявили, что данный плагин сможет декомпелировать ЛЮБОЙ бинарный файл на язык С#.
В интернете его нигде не нашел, а сам плагин стоит недёшево. Вопрос, стоит ли преобретать этот плагин? Правда-ли то, что они обещают? Сможет-ли он декомпелировать РОМы?

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Re: Hex-Rays
« Ответ #1 : 10 Декабрь 2009, 02:11:25 »
поискал несколько секунд и нашёл этот "плагин", сам попробуй потом расскажешь... :lol:
если что забей в google "IDA Pro Advanced v5.2+SDK+Hex-Rays+Official Utilit" и будет те счастье...

Оффлайн Timmy!

  • Пользователь
  • Сообщений: 87
  • Пол: Мужской
  • Livin' a lie!! TIMMY!
    • Просмотр профиля
Re: Hex-Rays
« Ответ #2 : 10 Декабрь 2009, 02:13:52 »
У меня это есть, но где HexRays? Качал именно с хекс реем, но установил, а им там и не пахнет.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Re: Hex-Rays
« Ответ #3 : 10 Декабрь 2009, 02:24:27 »
Личку проверил, да ???

Оффлайн Timmy!

  • Пользователь
  • Сообщений: 87
  • Пол: Мужской
  • Livin' a lie!! TIMMY!
    • Просмотр профиля
Re: Hex-Rays
« Ответ #4 : 10 Декабрь 2009, 02:26:19 »
Да, спасибо.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Re: Hex-Rays
« Ответ #5 : 10 Декабрь 2009, 02:38:35 »
Да незачто... :) только расскажешь потом, тоже интересно...

Оффлайн Timmy!

  • Пользователь
  • Сообщений: 87
  • Пол: Мужской
  • Livin' a lie!! TIMMY!
    • Просмотр профиля
Re: Hex-Rays
« Ответ #6 : 10 Декабрь 2009, 02:54:57 »
Здорово, уже декомпелировал THUG2.exe, всё понятно  :) теперь пытаюсь компилить его на Гейм Студио А7  :lol:
А вот что насчет ромов, я ни то, что не представляю, как с С# сварить ром, я даже незнаю чем его ассемблировать  :lol:
Нуб я еще, только любитель.  :)

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #7 : 10 Декабрь 2009, 09:58:13 »
По-моему подобная декомпиляция возможна только в один конец - для удобства восприятия. Обратно полноценно не скомпилишь.

Оффлайн Timmy!

  • Пользователь
  • Сообщений: 87
  • Пол: Мужской
  • Livin' a lie!! TIMMY!
    • Просмотр профиля
Re: Hex-Rays
« Ответ #8 : 10 Декабрь 2009, 14:55:01 »
Мда..  :( Я уже заметил, написал простую программу на Game Studio А7, потом дизассемблил и декомпелировал HexRay'ем, там вообще не то. Просто мне очень нужен исходник Tony Hawk's Underground 2, а на одних его скриптах много не сделаешь. А восприятию и правда помогает, можно на базе того, что декомпелируется, написать самостоятельно, например.  :) Вернее что удалось распознать декомпилятору, а остальное самому дописать  :lol:
« Последнее редактирование: 10 Декабрь 2009, 15:01:58 от Timmy! »

Оффлайн Йобан Матич

  • Emu-Land Team
  • Сообщений: 2593
  • Пол: Мужской
    • Просмотр профиля
Re: Hex-Rays
« Ответ #9 : 10 Декабрь 2009, 16:31:45 »
Цитата: Timmy!
Tony Hawk's Underground 2
А ты уверен что его на C# написали, а не на C++?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #10 : 10 Декабрь 2009, 21:33:18 »
Абсолютно без разницы на чём писали, если всё равно скомпилировано в машинные коды.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #11 : 10 Декабрь 2009, 21:46:24 »
HoRRoR, есть разница, про С# не знаю, но скомпилённый C/C++ код с другим не спутаешь: передача аргументов в функции, резервирование локальных переменных, обращение к ним - всё это делается на стеке, отсутствие проверок указателей и типов, и т.п.
скомпилённый паскаль выглядит совершенно по-другому.

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Hex-Rays
« Ответ #12 : 10 Декабрь 2009, 22:07:15 »
HoRRoR, есть разница, про С# не знаю, но скомпилённый C/C++ код с другим не спутаешь: передача аргументов в функции, резервирование локальных переменных, обращение к ним - всё это делается на стеке, отсутствие проверок указателей и типов, и т.п.
скомпилённый паскаль выглядит совершенно по-другому.
А еще можно сменить метод вызова функций и тогда, все что ты написал будет совсем подругому  :)

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #13 : 10 Декабрь 2009, 23:34:28 »
А еще можно сменить метод вызова функций и тогда, все что ты написал будет совсем подругому  :)
это да, но всё равно локальные переменные в основном на стек ложатся
разбирал когда-то код с штук 3-х разных компиляторов - в целом очень похоже,
в паскале всё совсем не так, на этапе выполнения куча проверок типа, ухода указателя куда-то е туда, переполнения и т.п. в сях этого нету
в бейсике вообще бардак нереальный :)

ЗЫ: это всё относится к асм M68K на Amiga, хотя на SMD наверное те же яйця..

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #14 : 10 Декабрь 2009, 23:45:03 »
MetalliC, не неси чушь, не сбивай с толку народ.

Цитата
передача аргументов в функции
Понятия "аргумент" и "функция" как таковые существует только на уровне языка. При конвертации кода в ассемблер все аргументы становятся обычными значениями, которые кладутся в стек, а функции становятся вызываемыми затем процедурами.

Цитата
резервирование локальных переменных
WTF? Ты сам хоть понял, что говоришь?
Возможно, ты имеешь ввиду резервирование места под локальные переменные. Но это уже зависит от компилятора/среды, а не от языка.

Цитата
обращение к ним - всё это делается на стеке, отсутствие проверок указателей и типов, и т.п.
Тут у тебя вообще каша какая-то. Нет на уровня ассемблера никаких проверок. Абсолютно. Есть значения и операции над ними. И из какого языка бы ты не компилировал, всё будет выглядеть примерно одинаково.

Цитата
скомпилённый паскаль выглядит совершенно по-другому.
Обоснуй или не неси что попало.
Да, он будет отличаться. Но не более, чем код C/C++, скомпилированный на одном компиляторе, будет отличаться от того же кода C/C++, скомпилированного другим компилятором. Сути это не меняет абсолютно, только особенности реализации некоторых моментов у всех разные. Например, у Паскаля обратный порядок укладки аргументов в стек, но это при необходимости лечится директивой stdcall (у Delphi, по крайней мере).

Цитата
А еще можно сменить метод вызова функций и тогда, все что ты написал будет совсем подругому
Что ты подразумеваешь под методом вызова функций? Порядок укладки аргументов в стек? И что же тогда будет по-другому?

Вывод: учите матчасть, а потом ведите дискуссии.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #15 : 11 Декабрь 2009, 00:02:05 »
Цитата: HoRRoR
Вывод: учите матчасть, а потом ведите дискуссии.
кучу всего скипнул

ещё раз: если брать современные компиляторы - всё что ты написал верно, разницы почти нет.

всё что я написал это не теория, а практика разбора кода компиляторов SAS C, DICE C, GNU C, Hisoft Pascal и BlitzBasic под M68K/Amiga

Добавлено позже:
применительно к ромхакингу, разницы с например SMD почти нет
да и многие игры для генесиса на амигах делались

Добавлено позже:
Цитата
Цитата
Цитата
А еще можно сменить метод вызова функций и тогда, все что ты написал будет совсем подругому

Что ты подразумеваешь под методом вызова функций? Порядок укладки аргументов в стек? И что же тогда будет по-другому?
первую строку ты же сам писал :), в M68K можно при вызове функции передавать аргументы/возвращать результат на стеке или прямо в регистрах процессора

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Hex-Rays
« Ответ #16 : 11 Декабрь 2009, 00:30:38 »
Что ты подразумеваешь под методом вызова функций? Порядок укладки аргументов в стек? И что же тогда будет по-другому?

Вывод: учите матчасть, а потом ведите дискуссии.
например в x86 стек может и не использоваться, если передается до 3-х переменных (значений) и функция объявлена как __fastcall, то  передается черех регистры ecx, edx, eax без стека
так же есть __pascal - передается так же как в Паскале и т.д.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #17 : 11 Декабрь 2009, 00:55:10 »
Цитата
всё что я написал это не теория, а практика разбора кода компиляторов SAS C, DICE C, GNU C, Hisoft Pascal и BlitzBasic под M68K/Amiga
Каким боком практика побудила тебя напрямую сравнивать машинный код с исходным кодом на языке высокого уровня?

например в x86 стек может и не использоваться, если передается до 3-х переменных (значений) и функция объявлена как __fastcall, то  передается черех регистры ecx, edx, eax без стека
x86 тут не при чём, всё решают оптимизатор и компилятор, независимо от процессора.

Цитата
так же есть __pascal - передается так же как в Паскале и т.д.
Банально порядок аргументов.
Ни на что толком эти изменения не влияют, основной код (обрабатывающий загруженные/переданные значения) останется прежним.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #18 : 11 Декабрь 2009, 01:11:30 »
например в x86 стек может и не использоваться, если передается до 3-х переменных (значений) и функция объявлена как __fastcall, то  передается черех регистры ecx, edx, eax без стека
так же есть __pascal - передается так же как в Паскале и т.д.
насчёт x86 спорить не буду.

но тут вроде как по ромхакингу раздел, и этот проц тут как бы не к месту ;)

в моторах где-то так же, но регистров побольше - 8 регистров данных (аккумуляторов по интеловским понятиям) и 8 адресных (32битных)
последний адресный A7 является указателем на стек,
поэтому типичный сишный код с постоянными обращениями по A7 с отритцательными смещениями и кучей комманд типа
move (a7,-xxx), xxxx

парни: ну мне чё реально сейчас декомпилить разный m68k софт чтоб сравнивать ?



Добавлено позже:
Цитата: HoRRoR
Каким боком практика побудила тебя напрямую сравнивать машинный код с исходным кодом на языке высокого уровня?
я ковырял/ломал разные программы, и похожу научился различать на чём они были написаны/скомпилены
Цитата: HoRRoR
x86 тут не при чём, всё решают оптимизатор и компилятор, независимо от процессора.
какой нахрен оптимизатор ??????? мы тут вроде о ромхакинге, и соответственно о компиляторах конца 80х-начала 90х, откуда там оптимизации ?

Добавлено позже:
вы мля ещё скажите что сишные компиляторы и паскали того времени давали одинаковый код!

Добавлено позже:
PCшные

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #19 : 11 Декабрь 2009, 01:13:18 »
Тема превращается в цирк.

Цитата
поэтому типичный сишный код с постоянными обращениями по A7 с отритцательными смещениями и кучей комманд типа
move (a7,-xxx), xxxx
Всё-таки продолжаешь утверждать, что всё зависит от языка, а не от компилятора.

Цитата
но тут вроде как по ромхакингу раздел, и этот проц тут как бы не к месту
Ромхакинг и программирование. Ромхакинг - имеет отношение? Имеет, как потенциальный инструмент. Программирование - тем более.

Цитата
мы тут вроде о ромхакинге, и соответственно о компиляторах конца 80х-начала 90х, откуда там оптимизации ?
Huh? Ну после таких высказываний не вижу смысла о чём-либо спорить.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #20 : 11 Декабрь 2009, 01:24:38 »
Тема превращается в цирк.
та да, зоопарк
Цитата
Всё-таки продолжаешь утверждать, что всё зависит от языка, а не от компилятора.
huh, уже не утверждаю, ДДД
Цитата
Huh? Ну после таких высказываний не вижу смысла о чём-либо спорить.
приведи примеры оптимизирующих компиляторов для консолей обозначенного периода, точнее процессоров используемых в них ?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #21 : 11 Декабрь 2009, 01:35:41 »
Цитата
приведи примеры оптимизирующих компиляторов для консолей обозначенного периода, точнее процессоров используемых в них ?
Слушай, ты реально думаешь, что компиляторы писали обезьяны молотами на камнях?
Оптимизация - базовый элемент при разработке любых систем с уклоном на эффективность и производительность.
Найди книгу "Конструирование компиляторов для цифровых вычислительных машин" 1975-го года, узри главу "Оптимизация программы", и пересмотри свои взгляды на теорию эволюции.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #22 : 11 Декабрь 2009, 01:42:22 »
Слушай, ты реально думаешь, что компиляторы писали обезьяны молотами на камнях?
где-то так :) и у камней тогда обычно было мегагерц 15, и памяти "640 килобайт хватит всем", так что развернуться сильно негде
Цитата
Оптимизация - базовый элемент при разработке любых систем с уклоном на эффективность и производительность.
Найди книгу "Конструирование компиляторов для цифровых вычислительных машин" 1975-го года, узри главу "Оптимизация программы", и пересмотри свои взгляды на теорию эволюции.
ок, по-свободе почитаю теоретические книжки

Добавлено позже:
и ответа на вопрос
Цитата
приведи примеры оптимизирующих компиляторов для консолей обозначенного периода, точнее процессоров используемых в них ?
я так и не увидел почему-то ...

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #23 : 11 Декабрь 2009, 01:56:10 »
Цитата
и у камней тогда обычно было мегагерц 15, и памяти "640 килобайт хватит всем", так что развернуться сильно негде
Знаешь, как раз на таком железе была самая жёсткая оптимизация. И производилась она человеком. Ибо не дай бог в каком-нибудь длинном цикле лишняя строчка обнаружится - секунды, а то и минуты времени даром пропадут.
Ты сам-то мозги напряги: за что следует бороться на маломощных машинах? За производительность. Как? Оптимизацией-матушкой, как же ещё.

Цитата
ок, по-свободе почитаю теоретические книжки
Т.е. ты ещё и считаешь, что от книжек этих нету толку? Т.е. дяденьки идиоты - и те кто пишет, и те кто читает, зря теряют время? Вот только что благодаря таким вот дяденькам нажимаешь ты сейчас на клавиши - не важно, всё равно ведь дураки.

Цитата
и ответа на вопрос я так и не увидел почему-то ...
Млѣть... Любой возьми, любой! Везде, так или иначе, есть оптимизатор. Любой высокоуровневый компилятор оптимизирует как минимум на уровне адаптации под архитектуру системы/процессора.
Упёртость твоя уже надоедает. Не можешь принять, что мнение твоё ошибочно - обязательно надо продолжать упорствовать, несмотря на абсолютное отсутствие объективных доводов. Как так можно чему-нибудь научиться - не знаю, метод проб и ошибок - путь первооткрывателей, ты же хочешь им пойти и потерять кучу времени, за которое узнал бы гораздо больше и гораздо правильней.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9381
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: Hex-Rays
« Ответ #24 : 11 Декабрь 2009, 02:38:39 »
Знаешь, как раз на таком железе была самая жёсткая оптимизация. И производилась она человеком. Ибо не дай бог в каком-нибудь длинном цикле лишняя строчка обнаружится - секунды, а то и минуты времени даром пропадут.
Ты сам-то мозги напряги: за что следует бороться на маломощных машинах? За производительность. Как? Оптимизацией-матушкой, как же ещё.
приехали, а нафик мне тогда компилятор и высокоуровневые языки? я тогда лучше на асме это всё реализую ;)
я вообще фразу
Цитата
где-то так  и у камней тогда обычно было мегагерц 15, и памяти "640 килобайт хватит всем", так что развернуться сильно негде
писал к тому, что современному компилятору нужны ресурсы в сотни (тысячи?) раз большие, чтобы просто откомпилировать что-то, ты вообще смотрел сколько ресурсов они кушают ? ;)

Цитата
Т.е. ты ещё и считаешь, что от книжек этих нету толку? Т.е. дяденьки идиоты - и те кто пишет, и те кто читает, зря теряют время? Вот только что благодаря таким вот дяденькам нажимаешь ты сейчас на клавиши - не важно, всё равно ведь дураки.
толк есть но в году написания тех книг имхо не хватало ресурсов для реализации этого (см выше про использование ресурсов компиляторами)
Цитата
Млѣть... Любой возьми, любой! Везде, так или иначе, есть оптимизатор. Любой высокоуровневый компилятор оптимизирует как минимум на уровне адаптации под архитектуру системы/процессора.
Упёртость твоя уже надоедает. Не можешь принять, что мнение твоё ошибочно - обязательно надо продолжать упорствовать, несмотря на абсолютное отсутствие объективных доводов. Как так можно чему-нибудь научиться - не знаю, метод проб и ошибок - путь первооткрывателей, ты же хочешь им пойти и потерять кучу времени, за которое узнал бы гораздо больше и гораздо правильней.
хрен с тобой, есть везде оптимизатор!
так будь добр дай мне компиляторы+супер/пупер/оптимизаторы С/С++/Паскаля для 6502, z80, M68000, проца SNES (не помню как он там), i8080, i4004  :D  где они ???????

Добавлено позже:
или по твоему если такие компиляторы есть для x86 = они есть для всех (микро)процессоров выпущенных за всю историю электроники ? и они уже были лет 15-20-25 назад ? :D  :D не смеши.
« Последнее редактирование: 11 Декабрь 2009, 02:59:52 от MetalliC »

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Hex-Rays
« Ответ #25 : 11 Декабрь 2009, 07:51:11 »
Нет, ну это диагноз. Человек вбил себе в голову что-то, не имея об этом ни малейшего представления, и пытается это доказать.

Оффлайн Gamefreak

  • Пользователь
  • Сообщений: 1167
  • Пол: Мужской
  • Маньяк
    • Просмотр профиля
Re: Hex-Rays
« Ответ #26 : 11 Декабрь 2009, 09:25:56 »
MetalliC,
http://www.cc65.org/
Компилятор C для 6502.

Оффлайн Про Игрок

  • Пользователь
  • Сообщений: 1870
  • "А ты...знаешь что такое Red Sky Project!?"
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Hex-Rays
« Ответ #27 : 11 Декабрь 2009, 18:09:19 »
Timmy!:
А что у тебя за планы на счёт THUG 2? Вставить персонажей, трюки и уровни из THUG 2 Remix? :cool:

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: Hex-Rays
« Ответ #28 : 11 Декабрь 2009, 19:14:40 »
а может кинете ссылочку на этот чудо декомпилятор? 

Оффлайн ukur

  • Пользователь
  • Сообщений: 151
  • Пол: Мужской
  • Северный тёмный
    • Просмотр профиля
Re: Hex-Rays
« Ответ #29 : 11 Декабрь 2009, 19:20:43 »
ALEX_230_VOLT, прочитай второй ответ в этой теме и будет тебе счастье.