Pull to refresh

Comments 5

Есть ещё DIY реверс в особо сложных случаях. :)

Как пример проект реверса культовой игры StarFlight (изначально код игры написанный на Forth автор проекта странслировал в форму Си для компиляции Си компилятором и запуска с использованием графики на основе библиотеки SDL)

P.S. Вот ещё топик по «ручному» реверсу игры с использованием IDA 7.5 и с какими сложностями пришлось столкнутся автору топика Дизассемблер IDA Pro 7.5 для восстановления исходного кода игры (C/C++)

Спасибо!

Флагам инструкций бывают применения в плагинах общего плана, не знающих деталей конкретного процессора. Например, видел плагин, выделяющий цветами вызовы у любого процессора, распознавая их по CF_CALL.

Да, эти флаги хранятся в самих инструкциях для дальнейшего использования кем угодно. Но, фактически, можно обойтись и без них, и вручную по опкоду (а не по флагу) делать отрисовку.

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

Хотя пока искал это, попалась и другая реализация, использующая idaapi.is_call_insn() - та, скорее всего, работает через событие ev_is_call_insn и в таблице флагов не нуждается. Но в ней есть и другие флаги помимо CF_CALL, мало ли кто как их дальше использует.

Как-то помогал закрыть баг в отличном процессорном модуле с github, где автор радикально отказался от разного подобного «с виду легаси», среди прочего убрав и перечисления регистров из processor_t (в out просто выводим “R%d”, op.reg) - всё вроде бы отлично работало, но падало при определённых действиях с окном сегментов, пока не добавили эти самые перечисления. Видимо тащить нам все эти легаси до конца времён (но при этом как лихо «модернизируется» Python API, старые скрипты перестают работать чуть ли не после каждого обновления уже).

Sign up to leave a comment.

Articles