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

 eXeL@B —› Основной форум —› Очень нужно разобраться с косяком Олли + Win2000, помогите!
Посл.ответ Сообщение

Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 июля 2007 09:13
· Личное сообщение · #1

Помогите разобраться. Пишу заготовку программы, типа
.386
.model flat, stdcall
.stack 4096
.data
.code
L1:

ret
end L1

Запускаю это дело в олли, а она не может распознать точку входа!
1// Появляется пустой черный экран дизассемблера без единой команды
2// В регистре еах сидит точка входа: EAX 00401000 .ModuleEntryPoint
3// В регистре eip какое-то безумное число: EIP 793A87B3
4// Сам отладчик стоит на паузе и в строке состояния горит надпись «Access violation when [793A87B3] – use Shift+F7/F8/F9 to pass exception to program»

Перепробавал кучу вариантов, понял только что в XP на любой машине код выполняется безукоризненно. В 2000 винде Олля начинает корректно отрабатывать точку входа, толко если в начале вызвать одну-две APi-фции…. Причем этот косяк не только для пустого тела программы. Я могу в тело записать всякие там операции перемещения/деления/еще чего-там, вызвать простенькую процедуру, тело программы само оформить в виде процедуры, но точка входа не распознается. …
винда 2000SP4, тестировал на двух машинах....




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 13 июля 2007 10:40
· Личное сообщение · #2

suvolod пишет:
«Access violation when [793A87B3] – use Shift+F7/F8/F9 to pass exception to program»

Написано же - юзай Шифт+Ф9.
И в настройках отключи эксепшены.



Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 июля 2007 12:28
· Личное сообщение · #3

Не помогает... Shift F7, F8 дает окно с ошибкой. Shift F9 после двойного нажатия выгружает прогу (terminated), при этом моем коде, разумеется, не останавливается
а "в настройках отключи эксепшены." - это где ? У меня на вкладке Exteption не стоит ни одной галочки.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 13 июля 2007 12:32
· Личное сообщение · #4

Ну а проги вообще отлаживаются? Забей в свой исходник пару команд чтоли.




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 13 июля 2007 13:28
· Личное сообщение · #5

suvolod
Если пишешь прогу под Win32, то директива задания размера стека не нужна.
То есть, простейшая прога будет выглядеть так:
.386
.model flat, stdcall

.code
start:
ret
end start


-----
Программист SkyNet




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

Создано: 27 июля 2007 16:19
· Личное сообщение · #6

Вообще то нежелательно писать один-единственный ret так как эта команда совершает переход по адресу, лежащему на верхушке стэка, а здесь тут лежит неизвестно что, может даже и ноль - естественно ексепшн недолго схватить. Хотя в реальности ничего не происходит. То что Shift F7, F8 дает окно с ошибкой - тут что то странное. Все таки попробуй ольку сначала на заведомо корректных программах




Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 27 июля 2007 16:35
· Личное сообщение · #7

возвращает ret на kernel32.ExitThread хз конечно, но врядле буит в каких-то случаях иначе...

-----
invoke OpenFire




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

Создано: 31 июля 2007 15:39
· Личное сообщение · #8

Судя по значению регистра eip туда его и забрасывает. И строка состояния это подтверждает. Остается непонятным то, что такое же случается и не для пустого тела программы. Может все таки отключение эксепшнов помогло вопрошающему?


 eXeL@B —› Основной форум —› Очень нужно разобраться с косяком Олли + Win2000, помогите!
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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