В мильонный раз про дизасм native api

Тема в разделе "WASM.RESEARCH", создана пользователем iamlamer, 6 янв 2007.

  1. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Вопрос, наверное, старинный, но порывшись быстренько по WASM-у, вроде не нашел. :dntknw: Устроит, если просто ткнете пальцем в нужный линк.

    Проблема: диазм при помощи IDA-ы приложения, содержащего вызовы ядра через INT 2Eh. Хотелось бы в листинге вместо

    Код (Text):
    1. .text:00011043 push    40h
    2. .text:00011048 push    0
    3. .text:0001104D lea     edx, dword_11798
    4. .text:00011053 push    edx
    5. .text:00011054 lea     edx, dword_117A0
    6. .text:0001105A push    edx
    7. .text:0001105B push    80000000h
    8. .text:00011060 lea     edx, dword_11794
    9. .text:00011066 push    edx
    10. .text:00011067 lea     edx, [esp+20h+var_20]
    11. .text:0001106A mov     eax, 64h
    12. .text:0001106F int     2Eh         ; DOS 2+ internal - EXECUTE COMMAND
    13. .text:0001106F             ; DS:SI -> counted CR-terminated command string
    иметь что-то вроде RING0CALL NtOpenFile с комментами всех параметров (ка это делается для Win32 API) и с учетом версии ОСи, т.к. в NT и 2000 и XP номера функций разные. Это возможно, если да, то как?
     
  2. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Плагин писать свой в иде
    кстати, тут на сайте cдк по плагинам найти можно...
    а так.
    64h - это в зависимости от оси смотри...
    Тут же на сайте выкладывался список сист. вызовов по номерам для всей линейки NT
     
  3. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Список-то у меня есть в Свене Шрайбере. Справочник по параметрам для основных функций я вроде в Коберниченко нашел (говорят, еще в "Интеррупт листе" Ральфа Брауна есть). Так что ручками все вроде получается. Но!

    В 5-й ИДе в опциях есть галочка "Видеть INT 20 как VxDCALL", т.е. с дровами линейки 95/98/ME вроде ИДА дружит. Проблема в том, чтобы подружить ее и с линейкой NT/2K/XP, т.е. заставить видеть INT 2Eh именно как SYSCALL, а не как прерывание. Да даже не в этом дело (т.к. перед компиляцией можно просто пропатчить исходник и заменить все ИНТы на Сисколлы/Сисентеры), а в автоматических комментах к параметрам, которые оченно хоцца поиметь ( с учетом версии, ессно, т.к 0х64 в 2000 это НтОпенФиле, а в НТ это НтКуериДефаултЛокале. )

    Плагин... ну, можбыть... а автоматом? Или кто-то такие плагины уже делал? Прроблема-то вроде очень нередкая при дизасме чужих дров.

    Дык?
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    IDA.int за это отвечает вроде. Файл редактируемый тулзами FLAIR.

    И как ты себе это представляешь? Чтоб IDA сама определяла, для какой версии системы дизасмить? Плагин пиши, с GUI - народ спасибо скажет.
     
  5. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Кацца, кое-какие первые наметки есть. Пока я рою в следующем направлении:

    Код (Text):
    1. Action    name: MakePredefinedComment
    2. You can retrieve a predefined comment for the current instruction. Usually a predefined comment describes what the instruction does. For example, "xor" will have a comment like "excluse bitwise or".
    3. IDA keeps a database of predefined comments for the system calls too. For example, "int 21h with ax=4C" will have something like "quit to dos".
    4. If you want to insert a predefined comment for the current instruction, you need to specify the instruction mnemonics and so-called "comment index".
    5. Comment Index for Instruction
    6. The correct syntax is:
    7.  
    8.   Reg=Value ....
    9.  
    10. where 'reg' can be
    11.  
    12.         - register name (e.g. AX,BX,CX)
    13.         - "Op1" - for first operand
    14.         - "Op2" - for second operand
    15.  
    16. and 'value' is a valid C number.
    17.  
    18. For example:
    19.  
    20.   int
    21.   Op1=0x21 AX=0x4C01
    22.  
    23. means
    24.  
    25.         int     21h     where AX=4C01h
    26.  
    27. if the program being disassembled is a MS DOS executable, the predefined comment will be:
    28.  
    29.         DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
    30.         AL = exit code
    Т.е. вроде бы можно конструировать свои комменты к инструкциям, но...

    Это вообще к чему? Что с этим делать?
    MakePredefinedComment - это функция IDC? Что-то не похоже, да и в хелпе ее нет.
    Это какой-то конфигурационный файл? Какой и как его редактировать?
    Это 'retrieve', а как 'insert'? Я так понял, что "need to cpecify", но куда сами комменты-то сувать?
     
  6. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Ага. Примерно придумал, что надо делать. Надо писать IDC-скрипт, читая "Образ мышления ИДА" и юзая функции FindText, GetOpnd и GetMnem.