|
|
| Посл.отвђт | Сообщен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 Вроде всё понятно, основной вопрос в том как проконтролировать обнуление этих регистров?? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.039 |