Сейчас на форуме: Magister Yoda, subword (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› рекурсивный подсчет размера дизасм. листинга в строках |
Посл.ответ | Сообщение |
|
Создано: 12 июня 2008 11:00 · Поправил: Модератор · Личное сообщение · #1 если кто сталкивался с оценкой размеров кода, то знает, что удобно дизассмнуть целевой бинарь и просчитать количество асм. инструкций\команд только для заданой функи. в случае объемного кода и вызовов функций и джампов друг из друга, руками считать количество строк-инструкций неудобно. прикручивать дизасм или писать парсер листингов нет времени. может кто посоветует скрипт иды\ольки или стороннний софт под сабж (который на автомате пропарсит листинг или бинарь по заданому указателю и выдаст результат)? ----- HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE ![]() |
|
Создано: 12 июня 2008 11:09 · Поправил: pool · Личное сообщение · #2 |
|
Создано: 12 июня 2008 12:07 · Личное сообщение · #3 pool продолжая тему: если учитывается размер скомпиленного кода, тогда нужно реализовывать оптимизацию по размеру в обратную сторону ))) ProTeuS по теме: для уже скомпиленного кода такой приблуды не видел, но вариант с собственным парсером (дизасмом) мне кажется наиболее предпочтительным. ----- EnJoy! ![]() |
|
Создано: 13 июня 2008 15:59 · Личное сообщение · #4 |
|
Создано: 13 июня 2008 16:05 · Личное сообщение · #5 |
|
Создано: 13 июня 2008 17:56 · Поправил: drin · Личное сообщение · #6 |
|
Создано: 16 июня 2008 05:50 · Личное сообщение · #7 Перечитал 2 раза так и не понял че надо-то, вернее тут есть много вариантов, как интерпретировать.. Из названия топика вроде как посчитать надо дизасм. листинга в строках хм.. тока нах эти строки считать надо? Тут проще тупо трейс записать в лог после исполнения функи там будут именно только тот кодес что нужен для рипа(ну это самый примитивный способ) Если посчитать нужно бинарный код в байтах определенной функции, то вот есть проект sandsprite.com/CodeStuff/IdaVbScript_Setup.exe 900 kb(кто не шарит в кодинге, качать вообще не стоит!!) sandsprite.com/openSource.html там в хелпе на скриншоте видел, что показывает в ИДЕ размер функции P. S. сам мельком смотрел, все время не найду изучить, короче в долгий ящег положил там(в инстале) чет исходники есть плагина для оли и ИДЫ(скомпиленые бинари тоже есть), и они как-то походу через IP общаюццо между собой(или как-то так), бгг думал, что только я извращенец придумывать всякие варианты, но оказалось, есть челы еще круче %)) там сишный и VB кодес имеецо и для ИДЫ плуг надо перекомпилить версия не та, я помню тупо пропатчил 4B на 4C, но чет не пошел цуко мож VB версия не та или хз. Как понял из исходников там через COM интерфейс общение с VB кодесом осуществляеццо И там типа для оли и ИДЫ VB скриптовый движок есть и редактор кода, короче жесть, а не плагин все равно по теме никто не отписал, так что мож че тебе и прегодиццо Кто сильный и асилит что энто за чудо, отпишитесь здесь интересно будет почитать(уж аццки там аффтор намутил) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 16 июня 2008 11:58 · Личное сообщение · #8 >>Перечитал 2 раза так и не понял че надо-то, вернее тут есть много вариантов, как интерпретировать.. подс4ет мнемоник-строк в заданой функе (если есть подфукнции - рекурсивно с4итать объем команд и в них)... софтину уже на4ал глядеть, вроде многообещающе, незнаю пригодится ли мне (т.к. показывает не размер функции, а вы4итате оффсеты конца функции и на4ала, это немного разное), да и трейсинг также, поскольу тресить можно один код, а другой, который на даной машине никогда не отработает, не выполнить и, соотвественно, он отсанется непрос4итанным. кстате кто разобрался с какими там параметрами и вообще как перекомпилисть в даной софтине плаг к иде 5.2? к ольке установился а к иде вроде как надо пересобрать для своей версии ----- HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE ![]() |
|
Создано: 16 июня 2008 17:34 · Личное сообщение · #9 ProTeuS не подойдет он тебе, я его сейчас скомпилил, там размер самой функции только и все, если будут внутренние вызовы он их считать не станет(ну вернее примитивный подсчет моно сделать самому(кодес дописать), но не более) да и вообще он там походу лепил все че знает в одно(экспериментировал походу) VB я на дух не перевариваю, так что не стал дальше смотреть. Тем более что на васике такое кривое гуи делать это жесть(да и вообще чем VB юзать, так лучше уже C#, он тоже с неуправляемым кодом умеет работать) ну да ладно х** на этот плагин Вот залил то, что скомпилил заменить надо его, на мой.. demonteam.narod.ru/download/IDAVBScript_Stub.rar (25kb) (вроде погонял несколько минут, багов не заметил) ProTeuS пишет: да и трейсинг также, поскольу тресить можно один код, а другой, который на даной машине никогда не отработает, не выполнить и, соотвественно, он отсанется непрос4итанным. Хм., ну тут палка с большим концом получаеццо - это парсить надо все вызовы и джампы и также не исключено что там может быть спецом сделано несколько фейковых джампов типа PUSH reg/RET итд. (тут эмуль или трейс только подойдет) Так что попасть в хуиз знает куда или пропустить часть кода больше шансов(короче надо смотреть на код(или ТЗ), чтобы точно сказать, а так получаеццо гадание на куче) Тут в большинстве случаев(если я правильно понял) будет индивидуальный подход – ИМХО! ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
![]() |
eXeL@B —› Основной форум —› рекурсивный подсчет размера дизасм. листинга в строках |