Pull to refresh
12
0

Пользователь

Send message

В блоге Hex-Rays многое можно почерпнуть. Вот например HelloWorld в мире плагинов Иды http://www.hexblog.com/?p=120#PLUGIN_KEEP

Перестройка дерева довольно мудрено сделана в IDA — там нужно унаследовать класс, у которого паттерн Visitor. Затем, в процессе обхода всего дерева, распознать то, что хотим изменять и там же или отдельным классом-наследником Visitor перестроить дерево. Можно у меня посмотреть как это делается с отрицательными смещениями и переворачиванием условий в конструкции if. В общем, каждый такой случай, который хочется скрывать скорее всего придется программировать отдельно (впрочем можно этому научиться и, если потратив на это некоторое время, можно будет потом сэкономить гораздо больше, то это стоит того)


Насчет folding. Ида прячет сразу всё, но хотелось бы всё же условие у for, while и if видеть и иметь возможность отдельно True и False ветки сворачивать.

Где-то 2 — 2.5 месяца очень плотно сидел и затем на протяжении полугода иногда что-то фиксил и потихоньку добавлял.
Действительно, как-то я его прозевал
Я сначала придумал костыль в виде хранения объектов в глобальном массиве, чтобы Garbage Collector их не трогал и их число постоянно росло в ходе сессии, но потом обнаружил, что у Swig-объектов создаваемых IDA, есть поле thisown и, если поставить туда False, то изменение дерево больше не приводит к крашам.
Я задумывался об этом и есть идея, как реализовать. Но там кое-какие проблемы, например, как сделать адекватное автооткрытие при отладке. Впрочем в отладочном режиме можно пока что все в развёрнутом режиме держать. Попробую добавить, как с дипломом разберусь.

Information

Rating
Does not participate
Registered
Activity