Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

Gloomy Программа уходит из-под контроля отладчика Заинтересовался программой...


Gloomy Программа уходит из-под контроля отладчика Заинтересовался программой FlaX (662 Кб). Возникла интересная задачка: при запуске программы в OllyDbg отладчик считает что программа прибита, хотя она на самом деле продолжает работать. Как она умудряется вырваться из-под контроля отладчика? Такого я еще не видел
MoonShiner :: А че происходит в айсе? Есть ли процесс в списке задач? Видится ли каким нить LordPE?

Dragon :: Может быть она DLL подгружает какие-нибудь, и там что-то такое происходит.

Gloomy :: Проверил на наличие функции IsDebuggerPresent - ее нет.

MoonShiner
В Айсе ситуация аналогичная - он тоже считает что процесс прибит и проваливается в дебри ntdll.dll

Dragon
Никаких DLL нет вообще - один только запуской файл.

MC707 :: Ты вот на это обрати внимание:
00418788 ¦. AB_______________STOS DWORD PTR ES:[EDI]
00418789 ¦. 8D05 586C4400____LEA EAX,DWORD PTR DS:[446C58]
0041878F ¦. AB_______________STOS DWORD PTR ES:[EDI]
00418790 ¦. 8B45 08__________MOV EAX,[ARG.1]
00418793 ¦. AB_______________STOS DWORD PTR ES:[EDI]
00418794 ¦. 8D05 0C114400____LEA EAX,DWORD PTR DS:[‹& KERNEL32.GetProcAddress ›]
0041879A ¦. AB_______________STOS DWORD PTR ES:[EDI]

и еще:
004187BC ¦› A1 489F4500______/MOV EAX,DWORD PTR DS:[459F48]
004187C1 ¦. 83F8 00__________¦CMP EAX,0
004187C4 ¦. 74 53____________¦JE SHORT FLAX.00418819
004187C6 ¦. 33D2____________¦XOR EDX,EDX
004187C8 ¦. 8A10____________¦MOV DL,BYTE PTR DS:[EAX]
004187CA ¦. FF05 489F4500____¦INC DWORD PTR DS:[459F48] ; FLAX.00448D68
004187D0 ¦. 6BD2 05_________¦IMUL EDX,EDX,5
004187D3 ¦. A1 309D4500_____¦MOV EAX,DWORD PTR DS:[459D30]
004187D8 ¦. 03D0____________¦ADD EDX,EAX
004187DA ¦. 33C0____________¦XOR EAX,EAX
004187DC ¦. 8A42 04__________¦MOV AL,BYTE PTR DS:[EDX+4]
004187DF ¦. 2245 05__________¦AND AL,BYTE PTR SS:[EBP+5]
004187E2 ¦. C645 05 FF________¦MOV BYTE PTR SS:[EBP+5],0FF
004187E6 ¦. 50_______________¦PUSH EAX
004187E7 ¦. 52_______________¦PUSH EDX
004187E8 ¦. 50_______________¦PUSH EAX ; /Arg1
004187E9 ¦. E8 42000000______¦CALL FLAX.00418830 ; \FLAX.00418830
004187EE ¦. 83C4 04__________¦ADD ESP,4
004187F1 ¦. A1 489F4500______¦MOV EAX,DWORD PTR DS:[459F48]
004187F6 ¦. 8945 00__________¦MOV DWORD PTR SS:[EBP],EAX
004187F9 ¦. A1 548D4400______¦MOV EAX,DWORD PTR DS:[448D54]
004187FE ¦. 8B0D 189D4500____¦MOV ECX,DWORD PTR DS:[459D18]
00418804 ¦. 5A_______________¦POP EDX
00418805 ¦. FF12_____________¦CALL DWORD PTR DS:[EDX]
00418807 ¦. 8B45 00__________¦MOV EAX,DWORD PTR SS:[EBP] ; ¦
0041880A ¦. A3 489F4500______¦MOV DWORD PTR DS:[459F48],EAX ; ¦
0041880F ¦. E8 EB030000______¦CALL FLAX.00418BFF ; \FLAX.00418BFF
00418814 ¦. 83C4 04__________¦ADD ESP,4
00418817 ¦.^EB A3____________\JMP SHORT FLAX.004187BC

аффигенно длинный цикл
При выходе из него (4187C4) - пускается другой процесс. Какой - не разбирался...

Gloomy :: MC707
Спасибо за подсказку, копаю дальше:
004187BC EB 5B JMP SHORT FlaX.00418819 ; теперь программа не закрывается в отладчике и ее можно спокойно ковырять.
Есть проблема - нашел место где выдается сообщение о неправильном серийнике:
00427F94 /. 55 PUSH EBP
Но там невозможно поставить бряк потому что это место в коде вызывается при вводе серийника. Пробовал ставить бряки на GetFocus и SetWindowsHookExA - они не работают. Как можно обойти такую систему ввода серийника?

MC707 :: Gloomy
В общем я пошел по другому пути.
В хекс редакторе изучил содержимое ехе. Он всегда в любой проге может много чего интересного дать ...
Нашел строки Flex Key, Key, flex.ini.
Нашел файл flex.ini - в папке windows
Поставил бряки на эти строки. Запускаем - прерываемся по адресу 42932F и видим, что прога считывает из ini строку
Key=...
Добавляем Key=666666
Итого попадаем в 43BA10 и видим как там вычисляется правильность/неправильность серийника. Я не вдавался в подробности как, но там все видно. И там еще дохрена проверок. Как минимум я 6 насчитал.

Ara :: А кто видел такое - место сравнения найдено, если EAX=0 (верный RegCod), то прога работает хорошо. Если в отладчике обнулить ЕАХ, то тоже все хорошо. Но если подпатчить немного, то программа вылетает в аут. Проверки на CRC нет !!!

Ara :: Да, еще, никаких пакеров-протекторов нет, есть VIsual C++ 7.0

Gloomy :: MC707
›› Итого попадаем в 43BA10 и видим как там вычисляется правильность/неправильность серийника
Прошел весь код от чтения строки из ini-файла до открытия окна программы - вычислить серийник не удалось Возможно дело в том что я отключил создание нового потока который обламывает отладчик (сообщает ему что программа закрылась)? Как ты проходил этот код? Так же прибив создание нового потока?

Ara
›› А кто видел такое - место сравнения найдено
Я такое видел когда ломал Promt XT. Добить его до конца так не смог - пришлось написать загрузчик. Попробуй DZA Patcher - она умеет создавать in-line патчи

Ara :: Gloomy пишет:
цитата:
Попробуй DZA Patcher - она умеет создавать in-line патчи


DZA вообщето у мяня что-то хреновато работает, правильно патчит только несколько байт, остальные что-то портит, я не разбирался. Попробую для интереса лоадер, потом напишу результат.

Ara :: Gloomy
Лоадер тоже не катит

Gloomy :: Ara
›› Лоадер тоже не катит
Тогда ищи как программа защищает память от чтения - см. справку по фукнциям VirtualProtect\VirtualProtectEx. А почему DZA не работает? Ты уверен что правильно задаешь все адреса и байты?

Ara :: Gloomy
Да говорю же, не разбирался, почему DZA не работает! Вернее, он работает, если нужно патчить 1-2 байта, а если больше, то облом. А может я где и ошибся, просто после я сделал свой крек на ВР и им пользовался. Сейчас все пытаюсь на Delphi сделать (без VCL), да что-то пока никак руки не дойдут.






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS