![]() |
eXeL@B —› Основной форум —› Исследование ClubControl Platinum Demo |
Посл.ответ | Сообщение |
|
Создано: 09 января 2006 12:43 · Личное сообщение · #1 Данная программа предназначена для использование в компьютерных клубах и интернет-кафе. Отличается от остальных гибкостью интерфейса и настроек за что и получила широкое распространение. Откуда: clubcontrol.ru/demo/ClubControlDemo.rar Размер: 5.7 MБ (5 936 344 байт) Данная демо версия имеет два ограничения(работает только с 10:00-17:00 и не возможно изменить пароль главного админа), а так в принципе она полнофункциональна и пригодна для использования! Устанавливаю себе на комп серверную часть Лезу в PEiD и смотрю "Microsoft Visual C++ 7.0", ага, прога ничем не запакована ![]() отлично! Первое что необходимо снять это "защита временем" ![]() ставлю бряк на GetLocalTime и запускаюсь, но олька не прерывается, выскакивает наг сообщающий о наличии ограничений, после чего выскакивает второй наг о том что типа время выбрал не удачное ![]() и прога завершает работу. вот и вопрос созрел ![]() как прога ещё может проверять время на компе? ![]() |
|
Создано: 09 января 2006 19:14 · Личное сообщение · #2 nobody пишет: как прога ещё может проверять время на компе? способов туева хуча ! Попробуй так. Если ломаешь в Оле - CTRL+N -> ищешь все апи со словом time -> забрячиваешь их (можно разными способами, но лучше всего, имхо, "Toggle breakpoint on import"). Или другой способ. Посмотреть какие АПИ вызывает прога с помощью любого АПИ шпиона. (Kerberos очень неплох) ----- Ни одно доброе дело не должно остаться безнаказанным !!! ![]() |
|
Создано: 09 января 2006 20:17 · Личное сообщение · #3 nobody, возьми любой справочник по API функциям, там будет около 15 функций, связанных непосредственно с временем. Самый действенный способ предложил [EXE]_cutor. Если неохота ставить бряки на все 15 функций, то вот тебе 5 самых распространённых имхо в защитах: GetTickCount, GetLocalTime, GetSystemTime, GetSystemTimeAsFileTime, GetFileTime. За полным списком обращайся к WinAPI справочнику. ![]() |
|
Создано: 09 января 2006 20:33 · Личное сообщение · #4 Обязательно засунь прогу в IDA, примени Microsoft VisualC 2-7/net runtime, MFC 3.1/4.0/4.2/7.1 32bit Поставь брэкпоинт на мессаджбокс, когда прервёшся второй раз. Смотри по листинку выше может есть какие-нибудь функции для работы со временем, распознаные идой. Увидел функцию: __localtime64 (В другой проге помню как то встретил COleDateTime::GetTime) Ну вообщем нужно занопить: .text:004D4A76 jz loc_4D505B .text:004D4A76 jz loc_4D505B .text:004D4A9B jge loc_4D505B ------------------ Слива в том что там потом ещё идет проверка времени и если оно не в нужном интервале то далеко не MessageBox выводится. Славо богу!!! что я это заметил и пропатчил. Ну вообщем занопь эти переходы и посмотри что произойдёт ![]() ![]() ![]() ----- Никто не знает столько, сколько не знаю я ![]() |
|
Создано: 10 января 2006 15:25 · Личное сообщение · #5 Спасибо за советы ![]() но я пошел немного другим путём...может более геморным, но не менее эффективным ![]() я протрассировал прогу в нормальном режиме работы(благо до нага кода там немного и времени ушло минут 5) и когда прога запускается в "не рабочее" время сравнил переходы и заменил несколько условных джампов на безусловные(занопить тоже что-то пришлось, но я почему-то забыл это законспектировать в блокноте)... прога конечно запустилась, но тут же порадовала аварийным выключением компа ![]() есесно посмотрел какие апи вызывают выключение(кстати, кроме апи, выключение ещё происходит и через запуск Rundll32.exe с параметром shell32,SHExitWindowsEx 1), поставил бряки и к своему удивлению обнаружил, что проверки на "правильное" время стоят повсюду!!! и если прогу всё-таки удается запустить, то она тут же отрубается(по аналогии с наномитами видимо, я назвал это Родномитами(от фамилии автора проги ![]() общий принцип проверок я понял и всё свелось к тому чтобы занопить от 3 до 6 джампов и поменять 2 джампа на безусловные... половину проги я уже "научил" работать как надо, но тяжелее всего приходится с основной функцией - "постановки времени на клиентский комп"! Satanael, если ты тоже смотришь эту прогу, попробуй посмотреть эту функцию ![]() начинается она где-то рядом с 004E67A5 (сверху) ![]() |
|
Создано: 10 января 2006 15:39 · Личное сообщение · #6 |
|
Создано: 10 января 2006 18:21 · Личное сообщение · #7 nobody в смысле ты пропатчил какую-то глобальную проверку? или имеешь ввиду что пропатчил только то чтобы прога запускалась в любое время? ------------------ Да это я про перезагрузку, лично я раньше с прогами которые так кординально поступают не сталкивался. ----- Никто не знает столько, сколько не знаю я ![]() |
|
Создано: 10 января 2006 20:19 · Личное сообщение · #8 Satanael пишет: Да это я про перезагрузку, лично я раньше с прогами которые так кординально поступают не сталкивался. что именно и где патчил? самый простой способ конечно это занопить вызовы процедур выключения, но не факт что прога будет работать правильно... я же сделал по другому: исключил возможность перехода на эти фукнции путём нопа джампов проверок и изменения некоторых условных джампов на безусловные.... но таких проверок функций в программе около 30!!!!! и после первого десятка мне уже это порядком поднадоело! ![]() Satanael, а как ты обошел это? ![]() |
|
Создано: 11 января 2006 00:32 · Личное сообщение · #9 Хм, странно я вроде в одном месте пропатчил прогу, запустил всё вроде нормально работало. Попыток вроде перезагрузки небыло (хотя у меня была много программ запущено, вдруг какая-то не дала виндам перезагрузится). ------- Пропатчить так что бы в 30 местах не мучатся, очень просто: возьми да и пропатч функции определения времени __localtime64. ----- Никто не знает столько, сколько не знаю я ![]() |
|
Создано: 11 января 2006 04:48 · Личное сообщение · #10 помню я эту прогу... не советую запускать клиентский модуль без особой надобности и бэкапа... инета можно запросто лишиться или того хуже... что касается ребута, то проще в самой функции, которая отвечает за отрубание компа и сделать преждевременный выход из этой функции, также мона изменить SHExitWindowsEx на что-нить более безобидное ![]() но ранний ret всего верней ;) ----- EnJoy! ![]() |
|
Создано: 11 января 2006 20:23 · Личное сообщение · #11 Satanael пишет: возьми да и пропатч функции определения времени __localtime64. ![]() ![]() это программа обязана "работать со временем", т.к. основная её функция это как раз работа со временем(подсчёт оставшегося времени на клиент.компе например) Jupiter пишет: не советую запускать клиентский модуль без особой надобности и бэкапа... инета можно запросто лишиться или того хуже... Да! есть такое ![]() Jupiter пишет: что касается ребута, то проще в самой функции, которая отвечает за отрубание компа и сделать преждевременный выход из этой функции, также мона изменить SHExitWindowsEx на что-нить более безобидное но ранний ret всего верней ;) вот именно что отдельной функции отрубания компа нет и каждый раз в процедурах эта функция описывается и врубается вместе с полезным кодом... т.е. даже если программа обнаружит что время "не то", но при этом будут занопены вызовы SHExitWindowsEx, то всё равно прога продолжит своё правильное выполнение ![]() Jupiter, тебе приходилось работать с полной версией проги? не помнишь где там регистрационная инфа зашита? ![]() |
![]() |
eXeL@B —› Основной форум —› Исследование ClubControl Platinum Demo |