Для обработки конструкций типа mov bx, offset next
29 Июл 2009 - 02:15 diamondz
Для обработки конструкций типа mov bx, offset next / jmp proc / next: есть решение лучше скриптов. Чтобы листинг не засорялся лишними метками, переходами и разрывами связи, можно загнать эти конструкции в макросы. Чтобы это стало возможным в дизассемблированном листинге IDA, есть вариант написания процессорного модуля-надстройки над стандартным x86, дизассемблирующим такие конструкции как псевдоинструкции-макросы. Пример:
or ah, 0A0h
mov bx, offset loc_FCCAB
jmp loc_FE913
; ---------------------------------------------------------------------------
loc_FCCAB: ; CODE XREF: seg000:CCB7j
; DATA XREF: seg000:CCA5o
mov ax, 29h ; ')'
mov bx, offset loc_FCCB4
jmp loc_FE907
; ---------------------------------------------------------------------------
loc_FCCB4: ; DATA XREF: seg000:CCAEo
test ah, 10h
jz short loc_FCCAB
mov ax, 707h
mov bx, offset loc_FCCC2
jmp loc_FE913
; ---------------------------------------------------------------------------
loc_FCCC2: ; DATA XREF: seg000:CCBCo
дизассемблируется как
or ah, 0A0h
ROMCallBX sub_FE913
loc_FCCAB: ; CODE XREF: seg000:CCB7j
mov ax, 29h ; ')'
ROMCallBX sub_FE907
test ah, 10h
jz short loc_FCCAB
mov ax, 707h
ROMCallBX sub_FE913
Для обработки конструкций типа mov bx, offset next / jmp proc / next: есть решение лучше скриптов. Чтобы листинг не засорялся лишними метками, переходами и разрывами связи, можно загнать эти конструкции в макросы. Чтобы это стало возможным в дизассемблированном листинге IDA, есть вариант написания процессорного модуля-надстройки над стандартным x86, дизассемблирующим такие конструкции как псевдоинструкции-макросы. Пример:
дизассемблируется как
Мне последний вариант представляется более читабельным, поэтому я такой модуль написал. Выложил тут: diamond.kolibrios.org/ida/romcall.htm