|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 9, 2004 18:21:44 · Поправил: bogrus Хочу пропатчить одну из системных dll и т.к. в файле это сделать нельзя , думаю это сделать в памяти для выбранного процесса . SFC надеюсь там не проверяет :) Патч заключаеться в правке нескольких байт секции кода . Скажите'c , как там со сбросом в своп , подгрузкой из образа на диске , атрибутами страниц памяти . Может мой патч затерется оригиналом ? |
|
|
Дата: Июн 9, 2004 18:40:57 > Скажите'c , как там со сбросом в своп что упало с возу, то... нет, не пропало ;) будет вытащего из свопа в отпаченном виде > подгрузкой из образа на диске модифицированные страницы попадают в своп, немодифицированные вытесняются вникуда, подкачиваясь непосредственно из exe/dll файла > атрибутами страниц памяти . атрибуты модификацию адназначно запрещают, точнее не разращают. чтобы разрешить запись с прикладного уроня без падчка dll, надо юзать VirtualProtect > Может мой патч затерется оригиналом ? нет не затрется и у тебя будет персонально отпаченная dll, но все остальные этого не заметят, т.к. винда поддерживает копирование при записи. варварский способ его отключения - сброс WP в CR0, но это можно делать тоько с уровня драйверов. корректный способ приводить не буду, т.к. лично мне хватает и варварского ;) |
|
|
Дата: Июн 9, 2004 20:05:51 Пока понятно , спасибо . Скажу ещё , что я собираюсь патчить (RESEARCH всё-таки) . Не секрет , что многие проги начисто доверяют Crypto API , а посредник между ними это несколько системных dll . Таким образом правкой этих dll в памяти мы их нагло обманываем . И что примечательно , сами выбираем кому лгать , а кому говорить правду и ещё это не зависит от используемого ими криптопровайдера . Например win2ksp4 и ф-ция CryptVerifySignature (advapi32.dll) : 7907A550 E8 25 00 00 00 call sub_7907A57A 7907A555 89 45 E4 mov [ebp+var_1C], eax 7907A558 8D 45 DC lea eax, [ebp+var_24] 7907A55B 50 push eax 7907A55C FF 15 08 13 06 79 call ds:RtlFreeUnicodeString 7907A562 83 4D FC FF or [ebp+var_4], 0FFFFFFFFh 7907A566 8B 45 E4 mov eax, [ebp-1Ch]Правим последние 3 байта например на 6A0158 (push 1,pop eax) и любая прога (шаровара например) получает результат о валидности проверяемой ею сигнатуры . Таких функций (возвращающих boolean или ERROR_SUCCESS) меньше десятка и им доверяет даже виндовая защита файлов (правда без админа в её контексте править видимо нельзя) . Собсно имея такую тулзень , можно грузить требуемую прогу или аттачиться к ней и спокойно обманывать . Как идея , стоит её развивать ? |
|
|
Дата: Июн 9, 2004 20:47:58 Смотря чего тебе надо, старче, смотря чего тебе надо... |
|
|
Дата: Июн 9, 2004 22:28:43 Да , довольно специфическая тулзень была Б , но и криптопровайдеры , сертификаты , подписи не зря существуют , а тут их одним махом так обманывать ... Идея мне нравиться , я так понял особо препятствий нет , буду кодить по-тихоньку . |
|
|
Дата: Июн 10, 2004 00:38:57 ну валидность сигинатуры то поимеешь, а что будешь делать с decode/encode ? |
|
|
Дата: Июн 10, 2004 10:39:52 · Поправил: bogrus А ничё не буду делать . Вернее пока не представляю это возможным . И смысл , т.е. если кто-то , что-то зашифрует , то естественно правкой пары байт я это не расшифрую :) Но вот , когда мучительно юзают decode/encode , потом это дело восемь раз хешируют , а проверяют этот хеш всего одной функцией , то этого вполне достаточно . Например ф-ция WinVerifyTrust (wintrust.dll) , проверяет всякие объекты через провайдеры , причём её не вызвать без окна , но возвращает только ERROR_SUCCESS в случая успеха . з.ы. немного не в тему , но интересный линк , как у чела появилась идея расшифровать винт после EFS , её тут же подхватили мелкософт,елкомсофт и пассваре :) |
|
|
Дата: Июн 10, 2004 11:52:36 В принципе это работа лоадера , выполняющего примерно такой скрипт : exe=target.exe ; createprocess delay=0 ; sleep dll=target.dll ; search offset1=0x00019950 ; check sign=E8250000008945E48D45DC50FF1508130679834DFCFF8B45E4 offset2=0x00019966 ; patch patch=6A0158 exitЯ некоторые видел , но они не патчат dll , может кто встречал такой ? |
|
|
Дата: Июн 10, 2004 12:16:05 Это можно сделать через Debug API под XP, т.к. там есть DebugActiveProcessStop и после проделанного можно будет отпустить процесс, или сделать через псевдо бряки(jmp $) без Debug API, всё вполне тривиально ;-) Принцип простой, тормозим процесс на EP и правим нужную DLL'ку. |
|
|
Дата: Июн 10, 2004 13:34:31 · Поправил: bogrus Да и ищё ... Скрипт будет немного больше , т.к. необходимо хранить сигнатуры требуемых патчей для разных версий dll (ОС) , а лоадер должен выбирать нужную . Короче делать ли универсальный , я не знаю . Могу где-нить потихоньку выкладывать сигнатуры таких ф-ций . |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.055 |