Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+5 невидимых) |
![]() |
eXeL@B —› Основной форум —› Помогите с Olly 2 |
Посл.ответ | Сообщение |
|
Создано: 14 декабря 2004 06:45 · Личное сообщение · #1 А то закрыли тему неожиданно.... ----------------------- Я гляжу, тут сильно Олю нахваливают. Может подскажете, аттачусь к hl.exe с внедренным в него Cheating Death client'ом 4.25.0, и усе. hl зависает, Оля зависает и только ресет поможет их снять. CD как то сечет, что запущен SoftIce, не пойму как, поэтому начал искать альтернативы, но, похоже проще будет с SIce-ом всё-таки. ![]() |
|
Создано: 14 декабря 2004 07:08 · Личное сообщение · #2 |
|
Создано: 14 декабря 2004 08:54 · Личное сообщение · #3 ---------------------------------------------------- Cheating Death client'ом 4.25.0 Это типа лоадер или чё? Если лоадер, он открывает прогу с привелегиями отладки и х.. ты к ней приатачишься! Я как понял ты хочешь приаттачиться к полноэкранной игре Поставь хот галку в настройках, чтобы оля стала по верх всех(все не на Оле, а Оля на всех ---------------------------------------------------- Аттач то проходит, но все нитки суспендед и не резюмятся ![]() CD - это лоадер, но после внедрения его длл в контру основной процесс можно закрывать он функциональности особой не несет. А вот та внедренная длл с закрученной функцией, которая отвечает за регистрацию клиента на серваке и она не хотит корректно работать если включен SIce. Игру я делаю в оконном режиме, для удобства. Дак значит Olly в этом случае не прокатит? Жаль, я думал раз уж коммерческие протекторы под ним пускают, то он смогет... ![]() |
|
Создано: 14 декабря 2004 09:01 · Личное сообщение · #4 ant_man пишет: Дак значит Olly в этом случае не прокатит? Жаль, я думал раз уж коммерческие протекторы под ним пускают, то он смогет... Комерческие протекторы почти под всем ложатся! На олю нех.. гнать - супер отладчик. Если уметь им пользоваться, тогда и HEX редактор не нужен и вообще нех не нужно... ![]() ![]() |
|
Создано: 14 декабря 2004 09:19 · Личное сообщение · #5 Я ж не спорю - если уметь, можно и в хекс. А если нет, то надо что-нибудь незаметно живучее, вовремя всплывающее и брякающееся где надо. Если говорить конкретно, то надо узнать чем занимается функция той длл по адресу 0x7fe010e0 в процессе hl. Но там куча SEH, INT3, RDTSC и мож еще что. И когда запущен SoftIce ничего полезного функция не делает, что резко усложняет задачу - непонятно где копать. А с Olly еще и умудриться надо до 0x7fe010e0 живым добраться ![]() ![]() ![]() |
|
Создано: 14 декабря 2004 09:27 · Личное сообщение · #6 |
|
Создано: 14 декабря 2004 09:37 · Личное сообщение · #7 |
|
Создано: 14 декабря 2004 12:48 · Личное сообщение · #8 |
|
Создано: 14 декабря 2004 12:54 · Личное сообщение · #9 что вы меня пугаетиити ![]() ![]() |
|
Создано: 14 декабря 2004 12:59 · Личное сообщение · #10 |
|
Создано: 15 декабря 2004 03:09 · Личное сообщение · #11 CD какой версии? Какая ОС? Под ХР с айсом CD 4.25 работает. Вчера проверил еще и с Olly - нормально аттачится. Защита там простая - проверки кода некоторых функций hl (путем checksum), проверка кода самой CD (сравнение с оригинальным кодом, который лежит чуть выше (для адресов 0х7fexxxxx оригинальный код лежит в 0x7ffxxxxx) + checksum на этот код, ну и проверки кода, который вызывает экспортируемые энжином функции. Впрочем, я разбирался достаточно давно (где-то с версией 4.1х), но не думаю, что там что-то кардинально поменялось. ![]() |
|
Создано: 15 декабря 2004 05:09 · Личное сообщение · #12 |
|
Создано: 15 декабря 2004 06:11 · Поправил: KATEHOK · Личное сообщение · #13 Да, отпускается. Только пришлось убрать бряки по эвентам (кроме int 3), иначе начинались глюки. Но я запускал HL в полноэкранном режиме; может, глюки из-за этого. Да, с айсом я работал еще под чистой ХР (без сервис паков), а с Olly - уже под ХР SP1. Ты как проверял, к серваку с защитой подключался? не кикает? А что, собственно, проверять? Я защиту не отключал - гиморно все это, т.к. вычисленные checksum'ы используются в обмене между клиентской и серверной частями CD (точно не скажу, но мне так показалось). А что нужно-то? Сэмулировать работу CD? ![]() |
|
Создано: 15 декабря 2004 06:59 · Личное сообщение · #14 В этом и фишка, я хочу знать как он сечет, что айс запущен. Потому что когда он это определяет, то с серваком общаться перестает, даже вычислять ответ не потрудится. У меня IceExt со всеми защитами включен - не помогает. Проверял что он делает в SEH с DRx так bpmb место_в_ядре_call_to_seh x do "bc1;bpmb @(esp+4*2)+1c;x;" //убрать старый бряк, поставить новый на DR7 в CONTEXT. не словило ничего - значит, кажись с DR операций нет... че еще копнуть, реестр попробую. от MeltIce айсекст должен железно беречь... ![]() |
|
Создано: 15 декабря 2004 07:42 · Поправил: KATEHOK · Личное сообщение · #15 По идее, CD DRx регистры не трогает, т.к. под NT нужны права администратора, чтобы их изменить (или я ошибаюсь? Впрочем, в ring0 он точно не лезет). Можно написать небольшой драйвер, который бы перехватывал обращение к этим регистрам (аппаратно) и выводил что-нибудь ![]() А точно CD перестает работать, может, он детектит простые точки останова на защищаемом коде (или установленные хуки)? Могу сегодня вечером проверить. ЗЫ Все-таки мне кажется, что айс он не детектит. ![]() |
|
Создано: 15 декабря 2004 08:09 · Личное сообщение · #16 |
|
Создано: 15 декабря 2004 08:35 · Личное сообщение · #17 |
|
Создано: 15 декабря 2004 09:54 · Личное сообщение · #18 |
|
Создано: 15 декабря 2004 10:02 · Личное сообщение · #19 |
|
Создано: 15 декабря 2004 10:09 · Личное сообщение · #20 KATEHOK ну вот, Asterix меня опередил =) пиши в структуру CONTEXT... после выхода из обработчика записанные значение окажутся в DRx. KATEHOK пишет: способ записи в DR регистры (не прыгая в ring0) а там по-любому только в ринг0... просто мы может записать в структуру CONTEXT а винда там уже сама это в DRx запишет (ессно на уровне ринг0). ![]() |
|
Создано: 16 декабря 2004 05:36 · Личное сообщение · #21 ant_man Все работает, с сервера не кикает. Правда, если несколько раза вызвать айс (HL в полноэкранном режиме), начинает бажить управление ![]() Asterix Mario555 SEH - это, конечно, хорошо. Но разве эти регистры не уникальны для каждой нити (другими словами, они должны переписаться при переключении на другую нить)? Тогда придется как-то встраивать обработчик исключений в чужую нить (как?), суспендить ее, патчить по адресу EIP (или как-нибудь еще вызвать исключение), резюмить, и т.д. Геморрой еще тот. Хотя у меня есть подозрение, что для ХР SP1 регистры DR одни и те же внутри каждого процесса. ![]() |
|
Создано: 16 декабря 2004 05:54 · Личное сообщение · #22 |
|
Создано: 16 декабря 2004 05:57 · Личное сообщение · #23 |
|
Создано: 16 декабря 2004 06:24 · Личное сообщение · #24 |
|
Создано: 16 декабря 2004 06:34 · Личное сообщение · #25 Айс из Driver Studio 3.1 (почти полная) + IceExt 0.65. Ничем не скрываю (!protect on юзаю вручную, когда понадобится). Все работает под WinXP SP1 (rus). Osinfo.dat скачан с нумеги. Зачем чужую нить суспендить, если айс в твоей шарит? Ну, как там айс шарит, дело темное. Ведь если установть аппаратный бряк, например, на функцию из kernel32.dll, то брякаться будут все нити. Но, похоже, это иногда не нравится винде, и бряки не срабатывают ![]() Как винда обрабатывает эти регистры при переключении нитей - фиг знает. Но в Win2k SP1 аппаратные точки останова действовали во всех адресных пространствах (Гунински даже эксплоит написал, который рушил lsass.exe и захватывал именованный канал), но эту проблему решили SP2 (или SP3?). Как - интересный вопрос. Кстати, никто не в курсе, как перехватить переключение на нужную нить и как самому принудительно переключиться? Может, ссылки полезные есть ![]() ![]() |
|
Создано: 16 декабря 2004 12:19 · Личное сообщение · #26 |
|
Создано: 19 декабря 2004 14:46 · Личное сообщение · #27 |
![]() |
eXeL@B —› Основной форум —› Помогите с Olly 2 |