хай всем кто-нибудь встречал анализатор ассемблерного кода для x86, позволяющий находить баги в сорцах типа использование неинициализированного регистра, и тому подобные огрешности?
Именно в .asm - исходном коде ? Или в бинарном ? Для второго варианта можно сделать плагин для IDA или даже скрипт на idc/питоне. С такими средствами и такими sdk, как у ida и hex-rays, подобные вещи делаются очень просто. Насчет багов "типа использования неинициализированного регистра" - имеется ввиду тупо текстовая ошибка программера, чтоли ?
Lunar_ Всеголишь создать декомпилятор и описать алгоритмически баги, как два пальца jorikh Если такие тулзы и существуют, их никто в паблик никогда не кинет.
интересует анализатор самого исходного кода. то что скрипт написать можно я в курсе, просто не хочется тратить на это время, если кто-то такое уже написал. я портировал довольно большой асм проект на 64-бита, из-за расхождений в calling conventions появилось много мелких багов (типа не сохранённый rcx, rdx), я их вроде все пофиксил, но на своё внимание рассчитывать довольно сложно, так как оно часто подводит - смотришь и не видишь очевидной ошибки.
Это называется "Доказательство правильности программ". Но для ассемблера это проблематично и вряд ли есть что-то готовое.
есть динамические. тот же волгринд. а вот со статикой вполне может не найтись, тк call [eax] и статик анализатор может заблудиться
ясное дело что на 100% это задача не решаема, как и любой другой статический анализинг. меня интересовало только где я забываю сохранить регистры, это задача решаема. накатал пока что простенький скрипт на питоне который показывает на возможные места где я мог сделать ошибки, но для общего решения он не годится.
можете накатать скрипт для иды, но если история про линь, то динамика с волом с написанием плуга под вашу цель точнее будет краш тут недавно про (имя выпало из памяти) тулкит-фреймворк для динамик анализов под вынь на базе вола рассказывал. поишите по форуму или спросите его. я думаю, это лучше чем колдовать со статикой
jorikh Я не вполне понял где вы хотите искать багов, на PE или вообще везде, или каждую процедуру отдельно посмотреть. Тем не менее мне представляеццо более простой выход - это выполнение кода на эмуляторе (пошагово) со скриптом-анализатором (который выглядит очень просто).