eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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


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

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

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

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

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

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


Ранг: 598.8 (!)
Статус: Модератор
Research & Development

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

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

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


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

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

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


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

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

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

Ранг: 63.8 (постоянный)
Статус: Участник

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

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

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

Создано: 16 июня 2008 05:50 New!
Цитата · Личное сообщение · #7

Перечитал 2 раза так и не понял че надо-то, вернее тут есть много вариантов, как интерпретировать..
Из названия топика вроде как посчитать надо дизасм. листинга в строках хм.. тока нах эти строки считать надо?
Тут проще тупо трейс записать в лог после исполнения функи там будут именно только тот кодес что нужен для рипа(ну это самый примитивный способ)
Если посчитать нужно бинарный код в байтах определенной функции, то вот есть проект
sandsprite.com/CodeStuff/IdaVbScript_Setup.exe 900 kb(кто не шарит в кодинге, качать вообще не стоит!!)
sandsprite.com/openSource.html
там в хелпе на скриншоте видел, что показывает в ИДЕ размер функции

P. S.
сам мельком смотрел, все время не найду изучить, короче в долгий ящег положил
там(в инстале) чет исходники есть плагина для оли и ИДЫ(скомпиленые бинари тоже есть), и они как-то походу через IP общаюццо между собой(или как-то так), бгг думал, что только я извращенец придумывать всякие варианты, но оказалось, есть челы еще круче %))
там сишный и VB кодес имеецо и для ИДЫ плуг надо перекомпилить версия не та, я помню тупо пропатчил 4B на 4C, но чет не пошел цуко мож VB версия не та или хз.
Как понял из исходников там через COM интерфейс общение с VB кодесом осуществляеццо
И там типа для оли и ИДЫ VB скриптовый движок есть и редактор кода, короче жесть, а не плагин
все равно по теме никто не отписал, так что мож че тебе и прегодиццо

Кто сильный и асилит что энто за чудо, отпишитесь здесь интересно будет почитать(уж аццки там аффтор намутил)


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

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

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

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

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

Создано: 16 июня 2008 17:34 New!
Цитата · Личное сообщение · #9

ProTeuS
не подойдет он тебе, я его сейчас скомпилил, там размер самой функции только и все, если будут внутренние вызовы он их считать не станет(ну вернее примитивный подсчет моно сделать самому(кодес дописать), но не более)
да и вообще он там походу лепил все че знает в одно(экспериментировал походу)
VB я на дух не перевариваю, так что не стал дальше смотреть. Тем более что на васике такое кривое гуи делать это жесть(да и вообще чем VB юзать, так лучше уже C#, он тоже с неуправляемым кодом умеет работать) ну да ладно х** на этот плагин
Вот залил то, что скомпилил заменить надо его, на мой..
demonteam.narod.ru/download/IDAVBScript_Stub.rar (25kb)
(вроде погонял несколько минут, багов не заметил)

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

Хм., ну тут палка с большим концом получаеццо - это парсить надо все вызовы и джампы и также не исключено что там может быть спецом сделано несколько фейковых джампов типа
PUSH reg/RET итд. (тут эмуль или трейс только подойдет)
Так что попасть в хуиз знает куда или пропустить часть кода больше шансов(короче надо смотреть на код(или ТЗ), чтобы точно сказать, а так получаеццо гадание на куче)
Тут в большинстве случаев(если я правильно понял) будет индивидуальный подход – ИМХО!
 eXeL@B —› Основной форум —› рекурсивный подсчет размера дизасм. листинга в строках

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS