Вопрос № 32092: Господа имеется програмка (кусок из которой приведен внизу)
Код написан и откомпилирован в компиляторе FASM
Задача данного куска открыть файл и считать пару байт из него.
Файл под именем file.ddd лежит в той же папке что и прога "C:...Вопрос № 32094: Ты слишком долго блуждал в темноте, и ты думал, что ночь это день
Ария, песня “Что вы сделали с вашей мечтой”
Здравствуйте уважаемые эксперты.
Моё имя Павел. На данный момент я изучаю Выпуск N 016 из Рассылки Калашникова О...
Вопрос № 32.092
Господа имеется програмка (кусок из которой приведен внизу)
Код написан и откомпилирован в компиляторе FASM
Задача данного куска открыть файл и считать пару байт из него.
Файл под именем file.ddd лежит в той же папке что и прога "C:1"
Прога трассируется отладчиком TD.exe
Есть две проблемы:
1 - Очень часто прога не может найти файл - выставляет флаг СF и заносит в AX ошибку 02 - "не могу найти файл"
2 - иногда прога назодит файл но не читает из него ничего, ошибку чтения не ставит просто в AX = 0 , типа считал 0 байт. Хотя должен был считать 10 байт
Файл имеет размер 10 байт и в нем записана строка "1234567890"
Приложение:
Отправлен: 24.12.2005, 03:04
Вопрос задал: GhostKU (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, GhostKU!
Start:
push cs
pop ds
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 24.12.2005, 09:53
Вопрос № 32.094
Ты слишком долго блуждал в темноте, и ты думал, что ночь это день
Ария, песня “Что вы сделали с вашей мечтой”
Здравствуйте уважаемые эксперты.
Моё имя Павел. На данный момент я изучаю Выпуск N 016 из Рассылки Калашникова Олега. Там речь идет, о способах обойти отладку программы. При этом подразумевается, что отладка программ происходит с помощью AFDPRO v1.00. Так вот автор предлагает вот такой метод обойти отладку программы:
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
xor ax,ax
mov es,ax
mov bx,es:[03h*4]
mov es,es:[03h*4+2]
mov byte ptr es:[bx],0CFh
mov ah,9
mov dx,offset Message
int 21h
ret
Message db 'DBG16_01.COM – порядок!$'
CSEG ends
end Begin
Суть этого метода такова, что мы по адресу обработчика 03h заносим команду IRET и AFDPRO умирает в долгой агонии.
Так вот, я придумал другой алгоритм, обойти отладку программы не только у AFDPRO, но и Turbo Debugger и даже у такого скальпеля как debug. Но я точно не знаю, можно ли этот алгоритм назвать анти-отладочным.
Вопрос: Можно ли, считать алгоритм, находящийся в файле PROGX.ASM, который я в свою очередь прикрепил к этому письму, анти - отладочным приёмом???
Спасибо за ответ.
Принцип работы алгоритма, находящегося в файле PROGX.ASM:
И так AFDPRO, Turbo Debugger используют 0 – ую страницу в своих целях, например для прорисовки самих себя. Если мы будем отлаживать программу с помощью AFDPRO и запишем во время отладки по адресу 0B800:0000h один байт, то записанный нами байт будет затёрт сразу после исполнения очередной команды.
Например:
Команда присвоения
Результат: 0B800:0000h = = 0CBh <= присвоенное нами значение
Очередная команда
Результат: 0B800:0000h = = 0XXh <= значение, которое присваивает сам отладчик
Отвечает: Евгений Иванов
Здравствуйте, Pavel Konstantinovich!
некоторых отладчиков ты и не увидишь даже, находясь в реальном режиме, хотя в это время отладчик работает в защищённом.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 24.12.2005, 09:58