· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Обнулить отладочные регистры (DRx) под NT

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Окт 7, 2003 17:56:42

Есть ли какой-нибудь простой способ сделать это под NT
без драйвера:
 xor     edx,edx
 mov     dr0,edx
 mov     dr1,edx
 mov     dr2,edx
 mov     dr3,edx


Дата: Окт 7, 2003 18:06:15

Для текущего процесса через SEH можно.


Дата: Окт 7, 2003 18:53:35

;; debug registers clearing example by dr.golova
;; mailto: dr_golova#pisem.net
;; fully multihreaded and position-independent code
;; compile it with netwide assembler
;; e.g. nasmw.exe -o drx_clr.bin -f bin -O4 drx_clr.asm

bits 32
section .text
global  _start

_start:
;;         int    3
         call   .pbase                           ;; push code address
.pbase:
         xor    eax, eax
         add    dword [esp], (.x_hnd - .pbase)   ;; update handler offset
         push   dword [fs:eax]                   ;; save old exception handler
         mov    dword [fs:eax], esp              ;; setup new handler frame
         mov    eax,  [eax]                      ;; exception here
         pop    dword [fs:eax]                   ;; restore old frame
         pop    eax
         retn
.x_hnd:
         xor    eax, eax
         mov    ecx,  [esp+00Ch]                 ;; context ptr
         mov    dword [ecx], 010017h             ;; set context flags
         add    dword [ecx+0B8h], 02h            ;; exception address
         mov    dword [ecx+018h], 0101h          ;; setup dr7 flags
         mov    [ecx+04h], eax                   ;; clear dr0-dr3
         mov    [ecx+08h], eax
         mov    [ecx+0Ch], eax
         mov    [ecx+10h], eax
         retn                                    ;; return to host
end


Дата: Окт 7, 2003 19:11:58

Asterix

Это все будет в статье. Вторая часть.


Дата: Окт 7, 2003 19:22:39

Это все будет в статье. Вторая часть.
Дождемся ли? :)
Когда обещают? :))


Дата: Окт 7, 2003 19:23:06

Спасибо всем, особенно Dr.Golova!


Дата: Окт 7, 2003 19:26:14 · Поправил: Max

Asterix
Примеры на масме были на y0da.cjb.net. В аттаче один из них.
Хотя Доктор уже все нарисовал коротко и ясно.

[added: сорри, прогнал, кинул не то, а то что надо в аттач не влазит :(]

1909489650__SEH.zip


Дата: Окт 7, 2003 19:46:41

Да, вроде у Dr.Golova всё ясно, но пример у меня никак в masm32 не
хочет компилиться :-(

Max

Есть у меня пример от Yoda, но его макросы меня смущают.


Дата: Окт 7, 2003 19:54:51

Max

Если бы Dr.Golova не ленился давать оперативные ответы обещали бы быстрее. Но и так достаточно скоро. Только не капай мне на мозги, а то у тебя такая тенденция есть.


Дата: Окт 7, 2003 22:54:23

Всё скомпилилось когда впереди добавил: ASSUME FS : NOTHING,
кто подскажет что это значит.


Дата: Окт 8, 2003 00:18:08

Enables error checking for register values. After an ASSUME is put into effect, the assembler watches for changes to the values of the given registers. ERROR generates an error if the register is used. NOTHING removes register error checking. You can combine different kinds of assumptions in one statement.


Дата: Окт 8, 2003 01:05:59

Ага..., а почему тогда у Dr.Golova в исходнике никакого assume
не требовалось, а masm'у нужно?
Кстати как проконтролировать что регистры обнулились?
Сейчас попробую драйвер лог регистров, но кажется он пишет только
обращения??


Дата: Окт 8, 2003 05:18:30

Asterix

Я не понял твоего вопроса. Хочешь - вышлю сырую статью. Почитаешь.


Дата: Окт 8, 2003 06:03:29

ASSUME не влияет на значение сегментного регистра, но это не значит, что оно не влияет на инструкции, которые этим регистром пользуются.

Asterix
Дизассемблируй свой код и сразу всё поймёшь. А ещё лучше глянь под отладчиком.


Дата: Окт 8, 2003 10:39:04

Вроде всё понятно, основной вопрос в том как проконтролировать
обнуление этих регистров??

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039