Сейчас на форуме: Magister Yoda, subword (+9 невидимых)

 eXeL@B —› Основной форум —› рекурсивный подсчет размера дизасм. листинга в строках
Посл.ответ Сообщение

Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 июня 2008 11:00 · Поправил: Модератор
· Личное сообщение · #1

если кто сталкивался с оценкой размеров кода, то знает, что удобно дизассмнуть целевой бинарь и просчитать количество асм. инструкций\команд только для заданой функи. в случае объемного кода и вызовов функций и джампов друг из друга, руками считать количество строк-инструкций неудобно. прикручивать дизасм или писать парсер листингов нет времени. может кто посоветует скрипт иды\ольки или стороннний софт под сабж (который на автомате пропарсит листинг или бинарь по заданому указателю и выдаст результат)?

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




Ранг: 8.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 июня 2008 11:09 · Поправил: pool
· Личное сообщение · #2

Сорри за оффтоп, но что такое оценка размеров кода, вы хотите может посчитать, какую сумму надо заплатить за написанный код? если так, то тут другая технология подсчёта, которая учитывает и комментарии при написании кода, т.к. подсчёт строк стал не актуальным со времени изобретения ООП.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 12 июня 2008 12:07
· Личное сообщение · #3

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

ProTeuS
по теме:
для уже скомпиленного кода такой приблуды не видел, но вариант с собственным парсером (дизасмом) мне кажется наиболее предпочтительным.

-----
EnJoy!





Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 13 июня 2008 15:59
· Личное сообщение · #4

А это для оценки производительности? Дык вроде есть бенч марки, которые считают и так... без дизасмов и др.

-----
Researcher




Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июня 2008 16:05
· Личное сообщение · #5

для оценки размера кода. например, если нужно знать какого размера функа, которую необходимо реверсить\декомпилить, или заранее знать, 4то совать в масм при рипе

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




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

Создано: 13 июня 2008 17:56 · Поправил: drin
· Личное сообщение · #6

ProTeuS
если я правильно понял нужно считать длины ОПкодов? если да, то советую глянуть ms-rem'овский AdvApiHook, там есть ф-ия для подсчета длины операнда но имеет несколько глюков - парочка ОПкодов не правильно считаются...



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 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




Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 16 июня 2008 11:58
· Личное сообщение · #8

>>Перечитал 2 раза так и не понял че надо-то, вернее тут есть много вариантов, как интерпретировать..
подс4ет мнемоник-строк в заданой функе (если есть подфукнции - рекурсивно с4итать объем команд и в них)...

софтину уже на4ал глядеть, вроде многообещающе, незнаю пригодится ли мне (т.к. показывает не размер функции, а вы4итате оффсеты конца функции и на4ала, это немного разное), да и трейсинг также, поскольу тресить можно один код, а другой, который на даной машине никогда не отработает, не выполнить и, соотвественно, он отсанется непрос4итанным. кстате кто разобрался с какими там параметрами и вообще как перекомпилисть в даной софтине плаг к иде 5.2? к ольке установился а к иде вроде как надо пересобрать для своей версии

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 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 —› Основной форум —› рекурсивный подсчет размера дизасм. листинга в строках
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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