Плагин для IDA

Тема в разделе "WASM.BEGINNERS", создана пользователем Shooshpanchik, 27 ноя 2006.

  1. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Может кто видал плагин, который бы мог преобразовать push/call в invoke ? Вроде бы это реально, но что-то гугл об этом не знает.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Может, ты имел ввиду определение цепочки push+call как параметров для вызова API? Такое есть. А invoke - это макрос и он нужен только для удобства написания кода, но никак не для понимания. Если очень хочется - смотри в сторону декомпилятора в код Си.
     
  3. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Ну да, мысля понята правильно. Это нужно для реверсинга. Просто invoke Sleep,100 было бы и понятнее и запись короче. А вот у декомпилеров есть один недостаток. Они все делают на автомате, а IDA интерактивно. Т.е если IDA встретит jmp или ret дальнейший участок кода не дизасмится пока не встретиться переход на него. Для некоторых компиляторов также надо делать и встретив call ExitProcess. И если в IDA я могу это поправить, то в декомпилерах нет.
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Кому как.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    нет.
    Например можно написать так:
    Код (Text):
    1. push [Handle1]
    2. push [Handle2]
    3. call CloseHandle
    4. call CloseHandle
    Как плагин разберет сколько пушей, и какие именно относятся к call'у.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    n0name
    Ну, положим, OllyDbg разбирает такое. Собственно, IDA тоже (в комментариях пишет агрументы). Дело в другом - в читаемости и целесообразности invoke :)
     
  7. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Как заметил n0name, вызов ф-ции - это не всегда последовательность push, ..., call.
    Например, компилятор VC++ 8 имеет обыкновение разбавлять её другими инструкциями. Не говоря уже о custom call conventions.
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Разбирает только те функции, прототипы которых у него есть.
    Код (Text):
    1. Собственно, IDA тоже (в комментариях пишет агрументы).
    Ну ида и есть ида =) Она следит за стеком.
     
  9. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    скачал SDK к IDA, такой плагин написать - пара пустяков. Ида знает сколько параметров берет ф-я(хоть она из импорта, хоть из тела) например retn 8 уже о многом говорит...(это дело там для каждой функции есть как purged bytes) А если и не знает то подсчитать несложно. Проблемны только функции типа printf. Но то что изначально было в сырце как invoke легко преобразуется. Дальше больше. Захотелось мне раскрутить функции типа Func1(param,func2(param,param),param,param); И раскрутил. Все ОК, счас хочу switch/case покрутить вот только как это делать я даже ручками не умею. Мож кто подскажет ?
     
  10. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    Shooshpanchik
    О многом, но далеко не о всем. Как, например, быть с соглашением __fastcall? (IDA делает свои предположение, но далеко не всегда верные...) А ведь в этом случае количество передаваемых параметров будет не 2, а 4 или 5.
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    IDA это умеет.