Сейчас на форуме: YDS, _MBK_, user99 (+9 невидимых)

 eXeL@B —› Основной форум —› Исследование 16-bit DOS executable. NTVDM, Реальные адреса символов и symloc
Посл.ответ Сообщение

Ранг: 8.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 22 января 2006 01:25
· Личное сообщение · #1

Есть дизассемблированный при помощи IDA листинг 16и-разрядного ДОС приложения.
Есть список сегментов, достаточно большой - seg000...seg139 + dseg
Делаю следующее:

1) IDA -> produce MAP file
2) *.map -> idasym.exe -> *.sym
3) *.sym -> load to symbol loader and translate
4) символы становятся видны в SoftIce по команде SYM

НО!!! пробую получить адрес какого-либо сегмента - облом, пишеьт мол таких имен нет.
Имена seg000-seg139, dseg присутствуют в IDA и в сгенереном map-файле. В чем дело??


MAP-file:

Start Stop Length Name Class

00000H 00986H 00987H seg000 CODE
00987H 013ADH 00A27H seg001 CODE
...... ...... ...... ......
0E4C0H 0F2CFH 00E10H dseg DATA
0F2D0H 0F3B5H 000E6H seg139 STACK


Address Publics by Value

0000:0000 start
......... ; тут очень много loc_xxxx
0E4C:01ED aYN?
0E4C:01F6 a02u02u02u
0E4C:0206 word_E6C6
0E4C:0208 word_E6C8
0E4C:020A word_E6CA
0E4C:020C aNetSoprocessor
......... ; разные переменные
Program entry point at 0001:0000


так как программа 16и розрядная, в Windows XP она выполняется в контексте процесса NTVDM??

в списке процессов ее нет, по командам ADDR, MAP32 ничего не получаю соответственно.
MAPV86 ничего не выводит. В листинге команды MOD - NTVDM вообще нет, в документе написано что-то вроде
того, что NTVDM отображается как какой-то WOW процесс (WOWEXEC) и рядом же пример листинга, но у меня нет даже этого
wowexec. В таскМенеджере ntvdm есть.
Как это все понять?

Читал SoftICE Command Reference.pdf на тему NTVDM, как-тос мутно все...
Что можно вытянуть по ntvdm:
> PROC -x NTVDM
.......... ;пару блоков различной информации

> TASK
> No LDT


на 171ой странице вроде то, что мне требуется:

Use the MAPV86 command to get the starting address of the programs static code segment. Add 10h to the address if the program in an executable (.EXE). Use the SYMLOC command to set the symbol table alignment to that value.

но MAPV86 молчит при загруженом NTVDM. Там даже очень красивый пример есть, но толку.. у меня не выводит ничего =(((



!!! ??????? !!!
КАК СПРОЕЦИРОВАТЬ ЗАГРУЖЕННЫЕ В САЙС СИМВОЛЫ ПО ВЕРНЫМ РЕАЛЬНЫМ ФИЗИЧЕСКИМ АДРЕСАМ???
Игрался с SYMLOC и ничего не вышло. Ведь SoftIce ругается на имена сегментов segNNN, dseg. НО ПОЧЕМУ, ведь они есть
в сгенереном map-файле. Думаю эти вопросы и проблемы у меня возникают из-за нехватки опыта и отсутствия
каких-то знаний по 16-и разрядным приложениям. Как мне спроецировать таблицу символов???
u SymbolName меня перекидывает на invalid участки памяти, хотелось ыб использовать имена в командах установки
брэйкпоинтов да и при трасировке удобнее...

PS: DS 3.2.


 eXeL@B —› Основной форум —› Исследование 16-bit DOS executable. NTVDM, Реальные адреса символов и symloc
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати