Сейчас на форуме: asfa (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Интенсивный курс обучения крекингу или из грязи в князи
Посл.ответ Сообщение

Ранг: 0.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 декабря 2009 11:55 · Поправил: A-tomic
· Личное сообщение · #1

Уважаемые знатоки, помогите разобраться в проблемме пожалуйста.
Итак, имеется учетная программа, написанная под заказ разработчиками, с которыми давно утеряна связь для фирмы, которая давно прекратила деятельность. Нехорошие программисты кроме привязки к серийнику винчестера (о которой владельцу было известно и которая благополучно уже пропатчена одним хорошим человеком) тайно сделали ограничение по периоду работоспособности на два года и один месяц от даты билда (сервер не запускается если системная дата больше 02.12.09, клиент не дает записать документ с датой большей 02.12.09 - выскакивает месседжбокс (мол за рамками периода)). Более полное описание проги можно посмотреть здесь.

После ковыряния в олли и курения мануалов по ней пока есть два варианта развития событий:
[Первый вариант]
1. Ставлю системную дату больше пороговой (02.11.09)
2. Запускаю прогу полд олькой, смотрю строку где вываливается (А) и перехожу к строке (В), которая вызвала (А)
3. По очередности запускаю прогу под олькой с брекпоинтом на (В) при системной дате больше, а потом меньше пороговой
4. Нахожу место, откуда перекидывает к (А)
5. Затираю нопами нужные адреса
6. Если работает под олькой, затираю ноликами в хекс редакторе и сохраняю
[/Первый вариант]

[Второй вариант]
Прога сравнивает системную дату с константой (дата 02.11.2007). Если найти в олли эту константу (наверное количество секунд от р.х или как там в ассемблере) или как выглядит вызов процедуры, получающую системную дату то дело практически сделано. Верно? Если да то просветите плиз как это найти или сделайте плиз програмку: на форме только поле ввода даты и кнопка ОК. При нажатии на ОК в месседжбоксе вываливается введенная дата, в следующем месседжбоксе вываливается системная дата, прога закрывается, а я уже думаю разберусь сам.
[/Второй вариант]

Если я написал полный бред - наставте на путь истинный плиз.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 18 декабря 2009 13:15
· Личное сообщение · #2

5. Затираю нопами нужные адреса
6. Если работает под олькой, затираю ноликами в хекс редакторе и сохраняю
Нопами ты не адрес затираешь а код.. и не факт что нопами бывает и правка jn/je на jmp

GetSystemDate,GetSystemTime вроде время получает



Ранг: 0.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 декабря 2009 13:26
· Личное сообщение · #3

Сенкс, начинаю пробовать.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 18 декабря 2009 13:33 · Поправил: Isaev
· Личное сообщение · #4

A-tomic пишет:
Если работает под олькой, затираю ноликами в хекс редакторе и сохраняю

патчить можно и в Olly
A-tomic пишет:
как выглядит вызов процедуры, получающую системную дату

например
GetSystemTime, GetLocalTime
или "API break plugin" поставь для Olly
A-tomic пишет:
Если я написал полный бред

для начала, как вариант пойдёт главное - результат

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 0.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 декабря 2009 13:49 · Поправил: A-tomic
· Личное сообщение · #5

GetSystemTime есть пару вызовов качаю плагин, будем смотреть.
Правильно я выделил наиболее подозрительный?
Константу никто не скажет как найти если известно, что это конкретная дата?



Ранг: 0.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 декабря 2009 21:05 · Поправил: A-tomic
· Личное сообщение · #6

Немного вырос над собой, уже что-то понимаю. Движение по второму варианту (GetSystemTime) пока зашло в тупик. Взялся за клиент: ловлю вызов месседжбокса и двигаюсь по вызовам назад с тем чтобы найти чтото вроде CMP EAX, EBX (сравнение) с последующими переходами либо по одному адресу либо по иному, вычислив "правильный" переход меняя системную дату подменю "неправильный" на него.
API break plugin очень помогает
В правильном направлении мыслю? Курю мануал дальше...

Если у кого нибуть возникнет желание помочь - вот исходный материал, за него вроде бы взялся один форумчанин, но я не уверен не забросил ли он его.



Ранг: 0.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 декабря 2009 15:16
· Личное сообщение · #7

ОК, на данный момент счастливое завершение истории оттягивает только то что после рестарта процесса, который был terminated в олли теряются все брекпоинты... Как побороть?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 20 декабря 2009 16:14
· Личное сообщение · #8

Полный анализ сделать при запуске файла. обычн в этом причина



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 января 2010 22:58
· Личное сообщение · #9

A-tomic пишет:
после рестарта процесса, который был terminated в олли теряются все брекпоинты... Как побороть?

Ставить Hardware бряки.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 27 января 2010 18:05
· Личное сообщение · #10

Обяно теряются из-за корявого анализа, а не из-за того, что их кто-то стирает, поэтому ХВ тут скорее всего не при чём.
В любом случае неплохо бы на дату глянуть.


 eXeL@B —› Вопросы новичков —› Интенсивный курс обучения крекингу или из грязи в князи
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати