![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Morinehtar |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
Ребятушки, возник такой вопрос....
Есть простенький код, который работает:
Чуток меняем одну процедуру:
И он чудесным образом перестаёт работать (Нарушение доступа) . Подскажите, может кто знает... Почему он перестаёт работать? Где можно прочитать об этом поподробнее? В приложении скрины отладчика. На левой картинке сам буфер с процедурой, место перехода на вторую картинку отмечено красным. На правой картинке отмечено место вызывающее нарушение доступа. Он вылетает на переходе, не переходя. Присоединённый файл ( Кол-во скачиваний: 21 )
3.JPG 45,84 Kb |
||||
|
|||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
И правда, чудеса да и только А если серьезно, кто так делает во первых Код выполняется на странице не имеющей атрибута на исполнение, ну да ладно это пол беды. во вторых вызов CALL указывает уже не на ShowMessage а черт знает куда, в связи с относительной адресацией. Гугли: Относительная адресация Советую почитай, много познавательного http://wasm.ru/ Это сообщение отредактировал(а) Dik0n - 27.5.2011, 15:15 --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
это же просто чтение на х86
-------------------- Обижено школьников: 8 |
|||
|
||||
| Dik0n |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 11.5.2011 Репутация: 1 Всего: 10 |
какое же это чтение, внимательно смотрим на тему топика. тут копируется полностью процедура в свой буфер и из него запускается! --------------------
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ◄◄◄ Сотри монеткой защитный слой |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
код в сегменте read/write будет спокойно запускаться, не нада никаких virtualprotect
у ТС именно проблема с адресацией -------------------- |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
я вообще так не делаю, мне это не говори Я только сказал что в этом причины эксцепшна быть не может. -------------------- Обижено школьников: 8 |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
проблема эксцепшина что ShowMessage('rtg') вызываеться не по абсолютному адресу
в асм листинге это должно выглядить примерно так push ptr rtg mov eax,ShowMessage call eax смотря опять же как ShowMessage сделано (я в дельфи не силен) может быть вариант mov eax,[ShowMessage] -------------------- |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Почему не может-то? DEP если включён - будет вылет. Или ты в том смысле, что это не исключение, а именно завершение программы? Ну так автор и не говорил, что у него именно исключение. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
CodeMonkey
вы о чем? проблему то уже решили - адресация
а это как раз эксцепш, и если он не обрабатываеться то будет сам понимаете что. -------------------- |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
поправочка, аппаратный DEP
говорил что AV -------------------- Обижено школьников: 8 |
|||
|
||||
| Morinehtar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.5.2011 Репутация: нет Всего: нет |
500mhz
Dik0n
Цимес в том, что вылетает внутри ShowMessage, а сам асм-код ShowMessage я сравнивал с кодом при нормальном вызове - абсолютно идентичен. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |