|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 8, 2004 16:29:20 Извиняюсь за может быть детский вопрос но обратится больше не к кому. трассирую прогу в VC++7 1) >00411A25 push 5 00411A27 push 4 00411A29 call f (4110AFh) [EIP = 00411A25 ESP = 0012FDF8 EBP = 0012FEDC] 2) 00411A25 push 5 >00411A27 push 4 00411A29 call f (4110AFh) [EIP = 00411A27 ESP = 0012FDF4 EBP = 0012FEDC] 3) 00411A25 push 5 00411A27 push 4 >00411A29 call f (4110AFh) [EIP = 00411A29 ESP = 0012FDF0 EBP = 0012FEDC] 4)попадаю сюда @ILT+170(?f@@YAHHH@Z): >004110AF jmp f (411A60h) [EIP = 004110AF ESP = 0012FDEC EBP = 0012FEDC] ESP изменился ? кто его поменял ? Или я тупой или чего то не догоняю. Ну дальше все понятно прыгаем в функцию 5) >00411A60 push ebp 00411A61 mov ebp,esp [EIP = 00411A60 ESP = 0012FDEC EBP = 0012FEDC] Не могу понять почему call изменил указатель стека?? Ведь call это аналог обычного jmp ? Пытался посмотреть под SoftICE он он при запуске этой не останавливается почему ..может из за того что VC7 ?? на что можно поставить брейкпоинты чтобы он остановился (желательно поближе к _tmain()) Опс стукнуло при написании этих строк догадка!Может в стек пишется адрес возрата для выхода из функции ? Но где она пишется внутри call ?? то есть call это что то типа push EIP jmp туды ? Вопрос о софт айсе остался по прежнему без догадок. Как его заразу заставить нормальну продебагить эту прогу. На gui windows он всплывает как миленький тут же сволочь проглатывает и не давится.. С Уважением Дмитрий. |
|
|
Дата: Янв 8, 2004 16:47:56 Dim Dim "Инструкция CALL типа near помещает в стек значение регистра IP(смещение следующей инструкции), после этого он помещает в IP смещение первой иструкции вызываемой процедуры." CALL типа far - то же самое тока еще и CS сохраняет. Сначала CS, потом IP. Тип CALL - в зависимости от того как объявленна вызываемая процедура. (Так у Абеля написанно) >то есть call это что то типа >push EIP >jmp туды ? Похоже на правду. =) |
|
|
Дата: Янв 8, 2004 17:03:45 Спасибо ! а в нашем случае так как мы в win32 все вызовы сall по умолчанию near то есть в стек пишется тока EIP ? (В принципе думаю наверное да, ведь в win32 весь исполняемый код находиться в одном сегменте от 0 до 4гиг, как впрочем и данные, селекторы для кода и данных разные это да а диапазоны одни) Осталось тока с SоftICe понять .. Дмитрий. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.073 |