# крик души!!! как дальше жить?!

Тема в разделе "WASM.HEAP", создана пользователем kaspersky, 18 май 2008.

  1. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    началось все с того, что опубликовал короткий пост как грузить в иду два и более файлов одновременно: http://souriz.wordpress.com/2008/05/01/how-to-load-two-or-more-files-into-single-ida-pro-database/

    где привел фрагмент плагина для IDA 4.7, которую очень люблю и юзаю, хотя на работе стоит 5.2, но она мне не интересна. ну это ладно, это мои личные вкусы, дело-то в другом...

    \IDA\sdk\include\diskio.hpp
    // Starting with v4.8 IDA can load and run remote files.
    // In order to do that, we replace the FILE* in the loader modules
    // with an abstract input source. The source might be linked to
    // a local or remote file
    прототип load_nonbinary_file() изменен ;(
    ...не, ну и как после этого можно дальше жить?!

    не успел разработать плугин, как выяснилось,
    что он ни у кого не работает и почему-то все
    как один кинулись делать кастинг, даже не заглянув
    в в loader.hpp, а потом слать мне баг репорты,
    гря, что больше одного файла в иду не грузиться
    и она орет "Access violation at address 100F5AFD
    in module 'IDA.WLL'. Read of address 32334C5C",
    и что, дескать, я кругом не прав и вообще...

    распростанять сорцы плагинов.. это же...
    убиться можно ;( нее... я вообще не пойму кто выдумал
    эти си-плюсы и этот кастинг... ну почему народ кастит все
    автоматом, и даже когда ловит грабли, все равно никак
    не осилит себя заглянуть в прототип ;(((
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.298
    Адрес:
    Ukraine
    А кто писал статью о том, как избавиться от типизации в Си? Сам же начал :)
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    IceStudent
    избавиться от типизации можно и честными способами. теми же объединениями, например. ну и что, что писал? кастить все равно с умом надо. я бы еще понимал, если бы мой планин компилировался без ошибок, а при запуске - падал. ну тут кто угодно бы заподозрил автора плагина в кривизне рук (не проверил верисю иды, балда). но когда компилер дико ругается, то... и это уже не первый случай, когда на меня наезжают из-за того, что в чужой библиотеке сменились прототипы фунок и мой код не компилиться. и все (за редкими исключениями) кастят автоматом и никто, и никто блин, якорь ему под хвост и клей момент на резет, никто не смотрит во что они кастят!!! ну как можно кастить когда Error 1 error C2664: 'build_loaders_list' : cannot convert parameter 1 from 'const char [13]' to 'linput_t *' , ну разве не понятно, что char* и linput_t * это с 99% вероятностью _совсем_ не одно и тоже, а что-то гораздо более другое? и это делают люди, которые утверждают, что владеют плюсами и опыт кодирования имеют... ага, а потом у них когда нужно передать указатель на указатель они передают указатель на локальную переменную и... бац!!! спонтанные удары по памяти... и если в проекте используется моя библиотека, то я сразу крайний блин... ну как можно кастить указатель на указатель на DWORD (например), в укзатель на DWORD, который к тому же еще и не проиницилизированный ;(((
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    что ж поделать, бывает.
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    kaspersky
    а в чем их принципиальное отличие?
     
  6. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    такая проблема исправить готовый плугин?
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Colibri
    проблема в том, что я писал и тестил на 4.7 и хотя я и для 5.2 пишу, но не так регулярно, всех отличий в голове не держу, а люди (очень много людей) начали меня пинать, что я не прав, и что загрузить два+ файла в иду вообще ни разу кругом не возможно, при этом они.. ну я же писал - крик души. как можно делать кастинг, даже не заглядывая что и во что мы кастим?! и если это один, ну два... ну три... так ведь их... я запарился из мыльницы выгребать их спам.

    Asterix
    ну например, 5.2 при отладке ругается на конструкцию pushfd/popfd, грит, что программа пытается взвести флаг трассировки ;) других существенных отличий между 4.7 и 5.2 (консольные версии) я не нашел, хотя специально и не искал. но так чтобы так что-то такое новое появилось как это было скажем до 4.7, где в каждой версии новые фичи были видны сразу... а вот несовместимость плагинов 4.7 и 5.2 - весьма значительна. а оно мне надо - старые плагины переделывать? чисто лениво просто. ради чего? во имя чего? или 5.2 может сразу казать в Net сборках машинный и байт-код? куча программ используют этот трюк. не, ну можно загрузить два файла сразу, сделав ребазирование и другой шит, но только это не то ;((
     
  8. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    kaspersky
    Значит результат некачественного и несвоевременного тестирования
     
  9. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    5.442
    Крис, это проблемы любого сапорта - люди всегда чем-нть недовольны:))) создание страницы с faq'om немного облегчат тебе жизнь:derisive:)
     
  10. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    оффтоп: я конечно начинающий реверсер и всех прелестей могу не просекать
    но объясните мне, в чем смысл загрузки 2х файлов одновременно? почему, к примеру, нельзя загрузить 2 копии иды и реверсить одновременно 2 файла?

    или имеется ввиду загрузка в одно АП?
     
  11. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.218
    Адрес:
    Ukraine
    kaspersky
    Начиная с 5.2 (или 5.1 ?) вроде как интерфейс плагинов уже устаканился...
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    с плагином не знаком, но, видимо, да.
     
  13. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Colibri
    UbIvItS
    ЛЮДИ! какой саппорт, какое тестирование?! я ж говорю, привел на блоге кусок кода, который грузит два файла. не я, понимаю, что копи-н-паст рулит (причем совершенно без руля), но все-таки это уже проблемма тех, кто его скопил и спасил. вот сейчас я пишу нормальный плугигн, где куча #ifdef для проверки разных версий иды и который должен быть совместим со всеми ними, а вот если он не будет совместим - тады да, это уже будет мой косяк. но я же о другом говорю... и даже не о том, что люди копят-н-пастят (я этим тоже страдаю), я говорю о том, как они все это безбожно кастят. для ассемблерщиков (и паскалистов) - кастинг это явное преобразование типов , к которому прибегают, когда компилятор отказывается компилить несовместмые типы, которые иногда действительно несовместимы, а иногда просто по разному определены, ну по типу как все знают, что GetModHdl возращает указатель на базовый адрес файла, но без кастинга юзать его как указатель не дает, но кастить осмысленно надо и прежде чем кидать предъяву - сначала разобраться. кстати, в основном все предъявы от русских и индусов. наводит на размышления ;)

    Colibri
    > в чем смысл загрузки 2х файлов одновременно? почему,
    > к примеру, нельзя загрузить 2 копии иды и реверсить одновременно 2 файла?
    а очень удобно знаешь анализировать файл и dll'ки которые он юзает прямо в одной базе, чем держать две базы... и две копии иды... и перекрестные ссылки между двумя базами не организуешь...

    а если файл юзает свой драйвер, то опять-таки очень удобно грузить его в туже базу. а если еще и x86emu заюзать, то можно организовать "мосты" между драйвером и юзающим его кодом и проходить его в эмуляторе.

    так же (и с этим я постоянно сталкиваюсь). имеем мы программу, реализованную как приложение для вин и никсов, соотвественно, в pe и elf файлах. в программе имеется дыра. ошибка переполнения например. и мы хотим посмотреть как она реализована в обоих этих файлах, чтобы написать универсальный сплоит. в одной базе проще. т.к. можно и скрипт запустить для сравнения или что-то еще... а вот между базами скрипты уже не работают, точнее работают, но это очень сильно усложняет их программирование.
     
  14. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Если кто-то не удосужился разобраться и влепил каст не думая - это его проблемы. Не понимаю, зачем было вообще флейм разводить.
     
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    5.442
    kaspersky
    не знаю как индусы, а наши - народ эмоциональный: сначала делают - потом думают. к тому же, у тебя есть "друзья", которые с удовольствием юзают момент попортить тебе нервы:derisive: - вот и вся загадка:))
     
  16. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Крис
    Всё ок! сами виноваты! забей на них ;)
    только в будущем старайся в работах указывать версию по, ос, окружение и т.д. ...
     
  17. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Крис
    и вообще к чёрту этих ... народ ждёт чтиво по рустоку.с
    мы в тебя верим!
     
  18. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    reverser
    > Если кто-то не удосужился разобраться и влепил каст не думая
    > это его проблемы. Не понимаю, зачем было вообще флейм разводить.
    дык ведь сабж. нужно же кому-то высказаться, когда оно накипело ;)

    wsd
    > только в будущем старайся в работах указывать версию по, ос, окружение и т.д. ...
    это понятно... только ИМХО глупо в демонстрационных примерах указывать все эти особенности. такой способ загрузки работает на всех версиях иды, ну а то, что ильфак в очередно раз изменил прототипы... другой вопрос, что мне бы пора заставить себя юзать графическую версию 5.2, чтобы не выглядеть ослом, особенно когда я даю советы на формуах, вызывающие недоумение тех, кто никогда не нюхал консоли...

    > и вообще к чёрту этих ... народ ждёт чтиво по рустоку.с мы в тебя верим!
    пока читайте это:
    http://blog.threatexpert.com/2008/05/rustockc-unpacking-nested-doll.html
    хотя тут ребята судя по всему даже второй уровень не одолели...
    или одолели, но не описали... и получилось беспонтовая статья.
    как перехватить то место где русток обращается к PCI так и не сказали.
    ну оно понятно, что нужно ставить условный бряк на 0CF8h/0CFCh,
    а потом декодировать что он там считал через http://www.pcidatabase.com/index.php
    или дейстовать другим путем... там в принципе, можно мапить PCI порты
    на память и юзать mov вместо im/out... ладно, это меня куда-то понесло...

    кстати, вот еще пара приколов:
    http://www.reconstructer.org/papers/More%20advanced%20unpacking%20-%20Part%20I.zip
    http://www.reconstructer.org/papers/More%20advanced%20unpacking%20-%20Part%20II.zip
    (для тех, кому не жалко траффика и кто хочет поржать, настроение поднимает здорово)