|
195 / 14 / 1
Регистрация: 02.01.2017
Сообщений: 208
|
|
Как распознать переполнение стека в отладчике?03.03.2018, 14:59. Показов 1268. Ответов 7
Ни могу понять что за проблема, перед входом в процедуру в стеке два адреса возврата. Потом несколько dword'ов c координатами для функции MoveWindow. Всё идёт хорошо по началу, но как только прохожу функцию MoveWindow стек оказывается сильно задран(как будто он получается сильно выше) что я не могу возвратится по своим адресам.
Прилагаю снимки ollydebug. перед исполнением MoveWindow и после неё. Думал ошибка в самой виндовой функции - попробовал SetWindowPos эффект тот же.
0
|
|
| 03.03.2018, 14:59 | |
|
Ответы с готовыми решениями:
7
Как считать много битов из файла, чтобы не было переполнение стека? Переполнение стека |
|
195 / 14 / 1
Регистрация: 02.01.2017
Сообщений: 208
|
|
| 03.03.2018, 15:00 [ТС] | |
|
----
0
|
|
|
653 / 161 / 64
Регистрация: 08.04.2015
Сообщений: 410
|
|
| 03.03.2018, 16:54 | |
|
Переполнение стека - это немного другое, здесь не оно.
Информация скудная, самой программы нет, так что попробую угадать. В точке останова стек глубже + поменялись регистры, которые функция WinAPI в принципе менять не должна. Вы выловили точно не свой возврат и, скорее всего, вообще не возврат. Функция MoveWindow() посылает окну целую кучу сообщений, причём не Post, а Send, т. е. окно сначала обрабатывает каждое из посланных сообщений, и только потом программа идёт дальше. При одной из обработок срабатывает ваша точка останова. На адрес 401960 можно попасть, например, переходом с адреса 40190A при обработке совершенно другого сообщения.
2
|
|
|
Модератор
|
|
| 03.03.2018, 16:56 | |
|
Наверное есть смысл опубликовать минимальную программу, воспроизводящую ошибку.
1
|
|
|
195 / 14 / 1
Регистрация: 02.01.2017
Сообщений: 208
|
|||||||||||
| 07.03.2018, 08:24 [ТС] | |||||||||||
|
А можно устно? А то счас перелапачивать всё, чтобы отрезать лишнее - очень долго. Скажите как такое может быть, что функция вмешивается в состояние стека? По идее она же просто должна выбрать свои аргументы.
И путает стек функция именно в этом месте программы. Предназначение этой функции здесь переместить окно программы на рабочем столе. Там может быть два сомнительных аргумента, то что координаты не client а screen. И то что некоторые из них отрицательные. Но почему она просто не завершится нулём в eax, если ей не нравятся параметры? Можно ли это скорректировать отрезав лишнюю часть стека, которая остаётся после MoveWindow? Добавлено через 5 часов 53 минуты Короче я туда заплатку поставил:
Видать всё уходит вглубь этой функции.(
0
|
|||||||||||
|
653 / 161 / 64
Регистрация: 08.04.2015
Сообщений: 410
|
|
| 07.03.2018, 10:43 | |
|
Estimable, зачем задавать вопросы, если вы даже не пытаетесь понять ответы?
Ещё раз, другими словами. Оконная функция реентерабельна, на адрес 401960 (сразу после MoveWindow) вы попадаете не возвратом из MoveWindow, а условным переходом с адреса 40190A (или с какого-то ещё, который не вошёл на скрин) при другом обращении к функции. Поэтому не надо удивляться несовпадению ESP и других регистров.
0
|
|
|
195 / 14 / 1
Регистрация: 02.01.2017
Сообщений: 208
|
|
| 07.03.2018, 16:35 [ТС] | |
|
Увидел там снизу пояснение: jump from 40190a. Попробую затереть эти строки. Это получается что ollydebug не выполняет step forward по f7? Мне как-то привычней было когда пошагово дебагился.
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||
| 07.03.2018, 21:26 | |||
|
да еще и оптимизатор поработал найди книги Криса Касперски: "искусство дизасемблирования", "Фундаментальные основы хакерства" Добавлено через 2 минуты я уже не помню в разных дебагах мне встречались и F7\F8 и F10\F11
0
|
|||
| 07.03.2018, 21:26 | |
|
Помогаю со студенческими работами здесь
8
Переполнение стека Переполнение стека переполнение стека Переполнение стека Переполнение стека Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|