|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 31, 2004 20:55:57 volodya >А как эту фразу понимать? Менять на что? А эээ ммм... на селектор с нужным cpl... :) http://sbvc.net/articles/17.html http://sbvc.net/articles/16.html kaspersky млин... в 9х никто тебе по лапкам не даст ;) - об этом и речь... см выше - статьи с примерами. |
|
|
Дата: Май 31, 2004 21:05:27 Ага. Теперь понял. В задницу. Не работает. Вот из-за этого:
TrapFrame->SegCs = SANITIZE_SEG(ContextFrame->SegCs, PreviousMode);
if (PreviousMode != KernelMode && TrapFrame->SegCs < 8) {
//
// If user mode and the selector value is less than 8, we
// know it is an invalid selector. Set it to flat user
// mode selector. Another reason we need to check for this
// is that any cs value less than 8 causes our exit kernel
// macro to treat its exit trap fram as an edited frame.
//
TrapFrame->SegCs = KGDT_R3_CODE | RPL_MASK;
}
|
|
|
Дата: Май 31, 2004 21:17:38 · Поправил: R4DX Угу, а в мастдае работало... Там даже "заплатку" помнится кто-то из стороних производителей выпускал... По-моему антивурус какой-то... Не "Антивирус Касперского" ли случаем? :D [offtop]kaspersky - ты тот самый, что написал "Техника оптимизации программ", что у меня на полке лежит? Мой респект ;) Я в этой книжке (где про память написано) до сих пор не во всем разобрался 8) Давно хотел спросить не связано ли твой ник с ником создателя антивируса?[/offtop] |
|
|
Дата: Май 31, 2004 21:19:01 Все путают "Касперски" и "Касперский" :) |
|
|
Дата: Май 31, 2004 21:24:56 8) чувствуется я далеко не первый спрашиваю подобное =) |
|
|
Дата: Май 31, 2004 21:40:51 просто я не уверен... есть сайт http://www.kaspersky.ru... |
|
|
Дата: Май 31, 2004 22:16:16 Это Касперского, а не Касперски :) |
|
|
Дата: Июн 1, 2004 16:55:28 > Значит так, разуваем глаза и идем смотреть код NtContinue. > На, прямо исходниками тебе в нос. это украденные исходники из ms? что-то не похожи они ни на что. смотрел - w2k, w2ksp3, xp - нигде нет SANITIZE_DRADDR, DR7 - это да, принудительно очищаются глобальные флаги, но я ведь говорил по свое адресное пространство... во вском случае у себя я свободно ставлю точку останова на > MM_HIGHEST_USER_ADDRESS и она срабатывает. > if ((ContextFlags & CONTEXT_DEBUG_REGISTERS) == CONTEXT_DEBUG_REGISTERS совсем меня за дурака держишь, да? я не трогал флаги и эта ветка кода вообще не получала управления - ставил бряк в айсе. > А теперь я хотел бы насладится зрелищем того, как ты будешь есть свои лыжи :))) лыжи отменяются до лучших времен. исходники это хорошо, но дизассемблерный листнг лучше. перекрестных ссылок на KeGetCurrentThread, так что найти этот фрагмент кода нетрудно (там еще и константы рядом - e00f, ffff0155, 55... только никаких _проверок_ отладочных регистров там нет. |
|
|
Дата: Июн 1, 2004 18:16:18 Никуда лыжи не отменяются. "У кого-то слишком узкие норы! Нет! Кто-то слишком много ест!" .text:00430564 mov dl, [ebp+CONTEXT.Flags] .text:00430567 test dl, dl .text:00430569 jnz check_dr0 .text:0043056F mov eax, [esi+CONTEXT.Dr0] .text:00430572 .text:00430572 back0: ; CODE XREF: KeContextToKframes+4E3j .text:00430572 test dl, dl .text:00430574 mov [ebx+KTRAP_FRAME.Dr0], eax .text:00430577 jnz check_dr1 .text:0043057D mov eax, [esi+CONTEXT.Dr1] .text:00430580 .text:00430580 back1: ; CODE XREF: KeContextToKframes+4F7j .text:00430580 test dl, dl .text:00430582 mov [ebx+KTRAP_FRAME.Dr1], eax .text:00430585 jnz check_dr2 .text:0043058B mov eax, [esi+CONTEXT.Dr2] .text:0043058E .text:0043058E back2: ; CODE XREF: KeContextToKframes+50Bj .text:0043058E test dl, dl .text:00430590 mov [ebx+KTRAP_FRAME.Dr2], eax .text:00430593 jnz check_dr3 .text:00430599 mov eax, [esi+CONTEXT.Dr3] .text:0043059C .text:0043059C back3: ; CODE XREF: KeContextToKframes+51Fj .text:0043059C mov [ebx+KTRAP_FRAME.Dr3], eax .text:0043059F mov eax, [esi+CONTEXT.Dr6] .text:004305A2 and eax, 0E00Fh .text:004305A7 mov [ebx+KTRAP_FRAME.Dr6], eax .text:004305AA mov eax, [esi+CONTEXT.Dr7] .text:004305AD and ax, 155h .text:004305B1 test dl, dl .text:004305B3 mov [ebx+KTRAP_FRAME.Dr7], eax .text:004305B6 jz short loc_4305D9 .text:004305B8 mov eax, large fs:124h .text:004305BE mov ecx, eax .text:004305C0 mov eax, [esi+CONTEXT.Dr7] .text:004305C3 and al, 55h .text:004305C5 neg al .text:004305C7 sbb eax, eax .text:004305C9 neg eax .text:004305CB mov [ecx+KTHREAD.DebugActive], al .text:004305CE mov eax, 0FFDFF000h ; KPCR .text:004305D3 mov cl, [ecx+KTHREAD.DebugActive] .text:004305D6 mov [eax+50h], cl ; KPCR.DebugActive |
|
|
Дата: Июн 2, 2004 14:19:52 Слушайте, я тут примерчик написал... В аттаче есть... Только почему-то он ведет себя крайне странно. Если в SEH обработчик кинуть int 1 и сделать в SICE'е i1here on - появляется BSOD при бряке. Но самое странное то, что иногда мой бряк по dr3 ставится, а иногда нет :\ От чего это зависит понятия не имею... Сначала я думал, что это от того, что адрес по br невыровнен - поставил на заведомо выровненый адрес - ниче опять не работает... Поведение зависит от совершенно шаманских вещей... Так, например, при изменении cmp al, [flag] на cmp ax, [flag] (и соответственно <flag db 0> на <flag dw 0>) - все работает. 8) Я начинаю чувствовать себя глупо =) Вот листинг:
.386
.model flat, stdcall
option casemap :none
o equ offset
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data flag db 0
.code
seh_handler:
xor eax, eax
cmp al, [flag]
jz nnnext
push eax
push eax
call $+5+10
db "Debug Msg",0
push eax
call MessageBoxA
jmp exit
nnnext:
inc [flag]
mov eax, [esp+0ch]
assume eax: PTR CONTEXT
mov ebx, [eax].iDr7
;DR7_LEGAL=11111111111111110000000101010101
or ebx, 11110000000000000000000101000000b
mov [eax].iDr7, ebx
mov [eax].iDr3, o br
mov [eax].regEip, o cont
xor eax, eax
ret
start:
assume fs: nothing
push o seh_handler
push dword ptr fs:[0]
mov fs:[0], esp
xor eax,eax
mov eax, dword ptr [eax]
cont:
push eax
push eax
call $+5+5
db "damn",0
push eax
br: call MessageBoxA
exit: invoke ExitProcess,0
end start
_279897521__dr change Test.rar |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081 |