Вопрос, наверное, старинный, но порывшись быстренько по WASM-у, вроде не нашел. Устроит, если просто ткнете пальцем в нужный линк. Проблема: диазм при помощи IDA-ы приложения, содержащего вызовы ядра через INT 2Eh. Хотелось бы в листинге вместо Код (Text): .text:00011043 push 40h .text:00011048 push 0 .text:0001104D lea edx, dword_11798 .text:00011053 push edx .text:00011054 lea edx, dword_117A0 .text:0001105A push edx .text:0001105B push 80000000h .text:00011060 lea edx, dword_11794 .text:00011066 push edx .text:00011067 lea edx, [esp+20h+var_20] .text:0001106A mov eax, 64h .text:0001106F int 2Eh ; DOS 2+ internal - EXECUTE COMMAND .text:0001106F ; DS:SI -> counted CR-terminated command string иметь что-то вроде RING0CALL NtOpenFile с комментами всех параметров (ка это делается для Win32 API) и с учетом версии ОСи, т.к. в NT и 2000 и XP номера функций разные. Это возможно, если да, то как?
Плагин писать свой в иде кстати, тут на сайте cдк по плагинам найти можно... а так. 64h - это в зависимости от оси смотри... Тут же на сайте выкладывался список сист. вызовов по номерам для всей линейки NT
Список-то у меня есть в Свене Шрайбере. Справочник по параметрам для основных функций я вроде в Коберниченко нашел (говорят, еще в "Интеррупт листе" Ральфа Брауна есть). Так что ручками все вроде получается. Но! В 5-й ИДе в опциях есть галочка "Видеть INT 20 как VxDCALL", т.е. с дровами линейки 95/98/ME вроде ИДА дружит. Проблема в том, чтобы подружить ее и с линейкой NT/2K/XP, т.е. заставить видеть INT 2Eh именно как SYSCALL, а не как прерывание. Да даже не в этом дело (т.к. перед компиляцией можно просто пропатчить исходник и заменить все ИНТы на Сисколлы/Сисентеры), а в автоматических комментах к параметрам, которые оченно хоцца поиметь ( с учетом версии, ессно, т.к 0х64 в 2000 это НтОпенФиле, а в НТ это НтКуериДефаултЛокале. ) Плагин... ну, можбыть... а автоматом? Или кто-то такие плагины уже делал? Прроблема-то вроде очень нередкая при дизасме чужих дров. Дык?
IDA.int за это отвечает вроде. Файл редактируемый тулзами FLAIR. И как ты себе это представляешь? Чтоб IDA сама определяла, для какой версии системы дизасмить? Плагин пиши, с GUI - народ спасибо скажет.
Кацца, кое-какие первые наметки есть. Пока я рою в следующем направлении: Код (Text): Action name: MakePredefinedComment 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". 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". If you want to insert a predefined comment for the current instruction, you need to specify the instruction mnemonics and so-called "comment index". Comment Index for Instruction The correct syntax is: Reg=Value .... where 'reg' can be - register name (e.g. AX,BX,CX) - "Op1" - for first operand - "Op2" - for second operand and 'value' is a valid C number. For example: int Op1=0x21 AX=0x4C01 means int 21h where AX=4C01h if the program being disassembled is a MS DOS executable, the predefined comment will be: DOS - 2+ - QUIT WITH EXIT CODE (EXIT) AL = exit code Т.е. вроде бы можно конструировать свои комменты к инструкциям, но... Это вообще к чему? Что с этим делать? MakePredefinedComment - это функция IDC? Что-то не похоже, да и в хелпе ее нет. Это какой-то конфигурационный файл? Какой и как его редактировать? Это 'retrieve', а как 'insert'? Я так понял, что "need to cpecify", но куда сами комменты-то сувать?
Ага. Примерно придумал, что надо делать. Надо писать IDC-скрипт, читая "Образ мышления ИДА" и юзая функции FindText, GetOpnd и GetMnem.