|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 19, 2003 12:59:13 Перехватываю вызов функции.Смотрю стек. Вместо адресов - селекторы:смещения. Как получать адреса? |
|
|
Дата: Июн 19, 2003 17:58:27 Конкретнее, плиз. Вопрос: как передаются параметры функции? Через ebp или esp? |
|
|
Дата: Июн 20, 2003 06:21:58 Делаю обычную вещь: bpx TextOut на перехвате: dd ss:esp+4 вижу: 4aef:0000b392 175f:039c ... как увидеть содержимое 175f:039c |
|
|
Дата: Июн 22, 2003 06:22:17 Во-первых, надо пользовать ws для просмотра стека. Во-вторых, что-то я запутался. Зачем dd? Почему не d? И что значит селекторы и смещения в стеке???? |
|
|
Дата: Июн 22, 2003 07:27:55 Это чё за прога? DOS'овская что ли :-) Смотреть можно по-всякому, смотря как тебе нужно, dd [адрес, регистр, выражение]- если нужен DWORD, db [то же самое]- если нужны BYTE, есть и др. команды. По Sice есть переведённый на русский help, посмотри на http://kickme.to/cr0aker/ |
|
|
Дата: Июн 22, 2003 19:31:11 В том-то и дело, что не все так просто. Смотри, он ставит bpx на TextOut - это значит, что уже стоит Win 3.11 как минимум. А каким хреном там селекторы и смещения, я вообще дурею :) Не должно быть их там и все! |
|
|
Дата: Июн 22, 2003 20:17:18 Какая у тебя Windows, 98-я? Тогда бери два ворда за даблворд. Попробуй: dd 175f039c :-) |
|
|
Дата: Июн 23, 2003 00:03:02 Разве что так! Это называется - горе от ума :) |
|
|
Дата: Июн 23, 2003 01:06:53 · Поправил: Asterix [ volodya: Разве что так! Это называется - горе от ума :)] Да нет, есть такой глюк у Айса под 98-й Виндой. Я когда-то даже специально переставлял Айс на DS2.7 в 98-ю, чтоб уточнить чей это глюк SICE4.05 или Винды. Кстати, под win98 лучше оставаться на SICE4.05!!! ;-) |
|
|
Дата: Июн 23, 2003 03:52:07 Тогда прошу прощения. Сменить айс и дело с концом. Еще раз - мои извинения. |
|
|
Дата: Июн 23, 2003 04:27:10 · Поправил: Asterix Разве что сменить на другой дебаггер, потому что у DS2.7 то же самое под win98 :D, к тому же DS2.7 виснет под win98 :) Поэтому менять нужно Винду ;-) |
|
|
Дата: Июн 23, 2003 07:12:22 Спасибо всем за обсуждение. У меня действительно Win98. Цитата из help: For the dword format, data may be displayed in two different ways. •If the displayed segment is a 32-bit segment, the dwords display as 32-bit hexadecimals (eight hexadecimal digits). • If the displayed segment is a 16-bit segment (VM segment or LDT selector), the dwords display as 16:16 pointers (four hexadecimal digits, a colon, (':'), and four more hexadecimal digits). Вопрос теперь, как имея LDT selector и смещение, получить адрес памяти |
|
|
Дата: Июн 23, 2003 13:01:22 Всем огггромное спасибо. Нашел выход: Гружу символьную таблицу GDI32 и перехватываю TextOutA из GDI32, а не TextOut из GDI.При этом наслаждаемся 32-bit segment а не 16-bit. |
|
|
Дата: Июн 23, 2003 14:31:08 Ну вот! :-) |
|
|
Дата: Июн 25, 2003 07:41:17 Но так как вопрос с перехватом TextOut из GDI остался, помощь зала не помогла, пришлось позвонить другу (50/50 к сожалению отсутствует) Он поведал следующее: стек 16-битный и в нем сидят: ss:sp+0 -> far-adress for return ss:sp+4 -> nMaxCnt (int - 2 byte) ss:sp+6 -> far-adress of text ss:sp+8 -> HWND - 2 byte т.е. dd ss:esp+4 показывает на 175f:039c - а это просто длина строки 39c175f - такая ужасно длинная строка |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.100 |