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

 eXeL@B —› Вопросы новичков —› Проблема с исследованием программы
Посл.ответ Сообщение

Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 18:20
· Личное сообщение · #1

Привет,
Пытаюсь понять механизм защиты одной программулины японской.
Программа создает некий файл. Если его скопировать и удалить
старый и затем вместо удаленного вставить сохраненный программа
видит это дело и переустанавливается. Пробовал сохранять все даты
Создан, Открыт, Изменен ничего не получается. Смотрел не ставит
ли программа дров, тоже оказалось, что нет. Файл скопированный
абсолютно идентичный удаленному.
Можете подсказать в чем может быть дело? Прога небольшая рисовалка
японская. Взлом интереса ради. Если надо могу выложить на slil.ru
залил сюда:
slil.ru/29276386




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

Создано: 05 июня 2010 18:28
· Личное сообщение · #2

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



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 18:31
· Личное сообщение · #3

для того, чтобы прога проверяла по каким секторам разбит ее файл, без драйвера не обойтись?



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 18:32
· Личное сообщение · #4

C:\Documents and Settings\All Users\Application Data\SYSTEMAX Software Development\SAI\NotRemoveMe.ssd
вот этот файл, с которым происходят чудеса.



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 18:34
· Личное сообщение · #5

почему же тогда сравнение проходит успешно копии и оригинала?




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 05 июня 2010 18:58 · Поправил: neomant
· Личное сообщение · #6

Саму прогу не смотрел, но могу высказать такую мысль.
Если исходный файл находится на NTFS а копирование бэкапа происходит на FAT, то теряются файловые потоки, если, конечно, они были.
Попробуй найти инструмент для просмотра файловых потоков и посмотри их в исходном файле и бэкапе.

-----
Следуй за белым кроликом




Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 19:36
· Личное сообщение · #7

замечено следующее
Если я копирую файл, но оригинал не удаляю, а затем скопированным файлом записываю поверх оригинала, то программа нормально запускается!!!!!

если же я оригинал удаляю, и на его место копирую сохранненый, то происходит снова переустановка программы.
Вот такая байда.

Есть мысли?




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

Создано: 05 июня 2010 20:09
· Личное сообщение · #8

Есть 1 мысль, но очень хорошая: протри глаза и узри кнопку Правка, не плоди ненависть.



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июня 2010 20:46
· Личное сообщение · #9

Нашел очень интересную пару, в апи шпионе

sai.exe 0045EE09 0AC8 CreateFileA(014E29E8: "C:\Documents and Settings\All Users\Application Data\SYSTEMAX Software Development\SAI\NotRemoveMe.s...", C0000000, 00000000, 00000000, 00000003, 00000080, 00000000) returns: 00000370

sai.exe 0045EE3D 0AC8 GetFileInformationByHandle(00000370, 0012EC6C) returns: 00000001

GetFileInformationByHandle возвращает интересную структуру:
в ней интересно следующие поля:
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;

Возможно собака порылась в этих трех структурах.


typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION;

возможно все дело в долях секунды, которые файловые менеджеры не отражают.




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

Создано: 05 июня 2010 22:24
· Личное сообщение · #10

Возможно, а что мешает сам файл поотлаживать и разобраться?



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 06 июня 2010 09:54
· Личное сообщение · #11

пытаюсь разобраться, опыта мало.



Ранг: 58.1 (постоянный), 42thx
Активность: 0.060.01
Статус: Участник

Создано: 06 июня 2010 15:31
· Личное сообщение · #12

работа с файлом начинается 0045EE2E
если файл не валидный, то в loc_47BBB5 по
0047BBC0 jnz loc_47BD08
или по
0047BBD1 jnz loc_47BD08
получаем: 0047BD08 push offset aErrorUnmatchId
иначе всё в порядке



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 13 июня 2010 19:22
· Личное сообщение · #13

Все друзья!!! Сломал защиту, где можно статью опубликовать?




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 13 июня 2010 19:31
· Личное сообщение · #14

http://exelab.ru/art/?action=add

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 13 июня 2010 19:54
· Личное сообщение · #15

Млин, обнаружилась небольшая проблема, прога не хочет открывать и сохранять рисунок.
Придется еще попотеть. И отдать на тестирование.



Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 13 июня 2010 20:10
· Личное сообщение · #16

Ну ты если что пиши. ЗЫ так в чем там дело-то было?



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 13 июня 2010 20:35
· Личное сообщение · #17

Обязательно отпишусь.



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июля 2010 04:42
· Личное сообщение · #18

В общем, такая теперь проблема, как прога защищает себя стало, через ряд экспериментов ясно:
1)читает из файла данные, затем изменяет их и записывает
в этот файл снова.
2)Снова читает из этого файла, записанные данные
3)Сравнивает с прочитанным и измененным ранее в 1) и если все нормально, но не лишает программу функционала.

Вопрос, какая тактика будет самой оптимальной по времени, для
взлома этой программы?



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 05 июля 2010 04:54
· Личное сообщение · #19

найти переход после сравнения и изменить



Ранг: 6.5 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 05 июля 2010 05:16
· Личное сообщение · #20

понятно, проблема в том, что:
1)Сначала происходит 6 раз чтения из файла по 4096 байт
2)Затем 4 раза записи в файла по 4096 байт
3)Затем 2 раза чтения из этого файла по 4096 байт.

Найти, где это сравнивается при таком наличии буферов, довольно проблематично.




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 05 июля 2010 10:54
· Личное сообщение · #21

Видел патчи в которых патчится по 1024 байта, любое "работающее решение" является нормальным

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes



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


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