![]() |
eXeL@B —› Основной форум —› Немогу отловить передачу данных |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 19 мая 2006 18:10 · Личное сообщение · #1 Ломаю одну програмку. В принципе она уже сломана, только вот проблема: - прога работает, но при печати 10 строк (а в них важные данные) выводит не целые числа, т.е. например должно быть 1 а выводит 0,96. Так вот вопрос, как это можно отловить ? Вот пример того как оно выглядит на оригинальной версии и на ломаной: Оригинальная: img157.imageshack.us/img157/5372/orig8kv.jpg Ломаная: img92.imageshack.us/img92/5541/cracked6ak.jpg Заранее спасибо всем. ----- ~ the Power Of Reversing team ~ ![]() |
|
Создано: 19 мая 2006 18:36 · Личное сообщение · #2 В чём собственно вопрос? Вроде как: разыскивается экстрасенс с большим опытом. newborn пишет: но при печати 10 строк А если строк 9? newborn пишет: выводит не целые числа, т.е. например должно быть 1 а выводит 0,96. Возможно там по трассе не так много операций сопроцессора, обрати внимание на то, при каких условиях они выполняются. Авторам подобных тем По возможности ссылку. Если ссылки нет: 1) на чём написана прога; 2) как именно она взломана (подробно); 3) что уже пробовал. И вообще, от конкретики ещё никому не было плохо. ----- Всем привет, я вернулся ![]() |
|
Создано: 19 мая 2006 18:45 · Поправил: newborn · Личное сообщение · #3 |
|
Создано: 19 мая 2006 20:01 · Личное сообщение · #4 |
|
Создано: 19 мая 2006 20:53 · Личное сообщение · #5 |
|
Создано: 19 мая 2006 22:21 · Личное сообщение · #6 |
|
Создано: 19 мая 2006 23:07 · Личное сообщение · #7 WoLFeR Эта наверно таже прога :=) , я решил её добить. Hellspawn пишет: лови через createfile, может она CRC свой чекает.. Не чекает 100%, проверил. Tim пишет: Можно еще поискать константу 0,04 и -0,04. Это явно float, вот как он будет выглядеть: 0x3d23d70a это 0,04 0xbd23d70a это -0,04 Как такой константы там нету, так как каждый раз пересчитывается с разными данными. stahh пишет: Ну сходу можно сказать - ищи сравнение с 9 или 10. Где-то в функции которая вводит строки. Не могу сказать точнее, т.к. прогу не видел. Или, если нет кмп, может быть счетчик. В той же функции. Там нет разницы сколько строк, там прикол в подсчёте. Вообщем вот ссыль на прогу: rapidshare.de/files/20851679/Cc.rar.html весит где-то 3,5 Мб Защита состоит из ключа, длиной примерно 200 символов вида: 3A0D186D2B8D208FB1C6863141FD96CB941040 Что вообщем наталкивает на мыслю что это Хекс код, хотя хз При запуске проги ровно через 2 секунды выскакивает окно с регистрацией, просят ввести ключ из файла или руками, этот ключ не поможет и тот что уже вписан в ини файл тоже так как он был сгенерирован для другого компа, но он может быть поможет в будущем взломе, хотя тоже хз. Если у кого-то получиться ломануть так что б прога запустилась нормально и были активны все меню и кнопки то это хорошо и соотвественно пол пути, остальные пол пути я могу росказать потом. Для запуска проги она просит имя и код, надо ввести имя: admin С моей стороны я могу показать что надо править для того что бы прога запустилась рабочая, но может я ошибаюсь, просто хочеться узнать можно ли другим путём её запустить. Очень надеюсь на вашу помощь. Заранее спасибо за ответы. ----- ~ the Power Of Reversing team ~ ![]() |
|
Создано: 20 мая 2006 00:05 · Личное сообщение · #8 Может быть такой вариант. Если ты убил какую-то ф-цию(колл занопил или рет на входе) которая учавствует в проверке регистрации. Так эта ф-ция может использоваться для нормальной работы. Вот в проге, которую Тим попросил доломать была такая фигня - прога регистрацию не проверяет, нормально пашет, но при завершении - вылетает. Посмотри в этом плане. Качать не буду - лимит на подходе. ![]() |
|
Создано: 20 мая 2006 10:01 · Личное сообщение · #9 |
|
Создано: 20 мая 2006 10:03 · Личное сообщение · #10 stahh Не, нечё не нопил и рэт не ставил, там всё проще - 1 байт меняется и всё, в процедуру там где этот байт меняется можно попасть с 2 мест, с 1 места попадаем всегда при загрузке програмы, а со второго некогда не попадаем, хотя я пробовал специально попасть. Так что я думаю что этот 1 байт не влеяет как таковой на всю защиту, хотя как говориться ХЗ. Спецы, откликнитесь, помогите. ----- ~ the Power Of Reversing team ~ ![]() |
|
Создано: 20 мая 2006 10:20 · Личное сообщение · #11 newborn пишет: 1 байт меняется и всё, в процедуру Ну батенька, это вряд ли так просто. Процедура регистрации там такая : заполняете свои данные и программа закручивает это все в хекс. Затем отсылаете на фирму, там естественно пришлют вам назад что-то. Это что-то обрабатывается и уж наверняка не один байт правится. Иначе авторы защиты полные идиоты. Скорее всего просто прога после правки в целых полях поменяла тип поля на вещественный с 2 знаками или вообще это деньги(рубли.копейки). Прога на Дельфи написана, использует MD4 и MD5 - может и ломанется - только я пока не могу ей заниматься. ![]() |
|
Создано: 20 мая 2006 10:40 · Личное сообщение · #12 Тута я! Если округлить числа до целого, то результаты верные. Значит newborn при взломе мог просто отключить округление. Вот и я о том же. Ищи в этом направлении. Байт может высчитываться кучей способов - хрен надешь. Поэтому нужно или восстановить то, что ты поменял . Для юзанья из других ф-ций. Или искать другой способ обхода защиты. ![]() |
|
Создано: 20 мая 2006 10:41 · Личное сообщение · #13 |
|
Создано: 20 мая 2006 15:04 · Личное сообщение · #14 |
|
Создано: 21 мая 2006 10:23 · Личное сообщение · #15 |
|
Создано: 21 мая 2006 18:45 · Личное сообщение · #16 |
|
Создано: 22 мая 2006 11:44 · Личное сообщение · #17 |
|
Создано: 22 мая 2006 12:09 · Поправил: tundra37 · Личное сообщение · #18 newborn Пока только научился точки получать. Юзеров нашел в олли, взял последний заказ и смотрю "заявку на фурнитуру" - цифирь там другая, но пункты те же и кол-во с точками. Хорошо бы все-таки в Акцесовскую базу взглянуть и обрабатывающие программы посмотреть. По крайней мере при экпорте в Эксель в пунктах кол-во дробные числа. Попробуй сделать для этого заказа "экспорт списания в формате Эксель" на лицензионной программе и проверь графу кол-во : есть ли там дробная часть. ![]() |
|
Создано: 22 мая 2006 14:22 · Поправил: tundra37 · Личное сообщение · #19 Результаты исследования : 1) DeDe работает без проблем и отловить выдачу "испорченной картинки" можно и возможно найдется и "флаг", который ее портит. 2) Защита (это моя гипотеза) устроена так : сначала все запрещают, а потом при проверке лицензии открывают что нужно. newborn исправил флаг "работать разрешено" именно в том месте, где все запрещают. Т.к. в этом месте одновременно идут и начальные настройки, то отловить что-то тяжело. 3) Пока можно поискать флаг, который портит обработку графы кол-во(там на стек кладут 'Kol') и подправить его. Но где гарантия, что он один. +++++++++++++++++++++++++++++++ Вот начало программы, которая должна кончится разрешением 0062FD44 /$ 55 PUSH EBP А вот заветный вызов с EDX=0, но только сюда мы не попадаем. 0063013D |> 33D2 XOR EDX,EDX 0063013F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00630142 |. E8 45200000 CALL Ccalc0.0063218C ![]() |
|
Создано: 22 мая 2006 15:09 · Поправил: newborn · Личное сообщение · #20 Вообщем методом научного тыка получили: - прога где-то при запуске считывает какие-то данные про комп (скорей всего данные про проц, особенно потешило что розделяет оно данные на 2 типа AMD and Pentium с каждым билдом проца) было замечено на 3 машинах, на 2 пентюх и селерон а на одной Семпрон, так вот где Семпрон считает всё ок. П.С. Для тех кто помогает ломать, типа прога в начале просит создать ключ и отослать его розработчику, я думаю где-то тут кроется считывание данных, а потом просит ввести ключ тоже идёт како-ето сравнение, может стоит копать в этом направлении ? ----- ~ the Power Of Reversing team ~ ![]() |
|
Создано: 22 мая 2006 18:56 · Личное сообщение · #21 |
|
Создано: 22 мая 2006 20:23 · Личное сообщение · #22 004CF9B8 |. B8 01000000 MOV EAX,1 004CF9BD |. 0FA2 CPUID 004CF9BF |. AB STOS DWORD PTR ES:[EDI] 004CF9C0 |. 89D8 MOV EAX,EBX 004CF9C2 |. AB STOS DWORD PTR ES:[EDI] 004CF9C3 |. 89C8 MOV EAX,ECX 004CF9C5 |. AB STOS DWORD PTR ES:[EDI] 004CF9C6 |. 89D0 MOV EAX,EDX 004CF9C8 |. AB STOS DWORD PTR ES:[EDI] ==================== Только подсовывание ложных данных не помогает. ![]() |
|
Создано: 23 мая 2006 20:15 · Личное сообщение · #23 А чо тема закрыта? НУ ладно, а то я тока скачал. Прога уже работает или нет? Чот я не понял. Вот интересное место 0062F5FC . 0000803F DD FLOAT 1.000000 0062F600 55 PUSH EBP 0062F601 8BEC MOV EBP, ESP 0062F603 83C4 F8 ADD ESP, -8 0062F606 |. 84D2 TEST DL, DL Если забить эту ф-цию - прога запускается с кучей траблов, но рабочая. Тока я вообще не понял чо с ней делать. Как проверить эти цифры? ![]() |
|
Создано: 24 мая 2006 10:27 · Личное сообщение · #24 stahh пишет: А чо тема закрыта? Пока, нет. Известно, что флаг, который крак newborn меняет в 0, действительно проверяется при каждом рабочем действии. Но автор защиты добавил "козявку" - при вычислении "штук", причем не во всех местах, добавил корректировку их. Чтобы проверить правильность работы войди в Справочники->Заказы, выбери последний заказ двойным кликом и нажми кнопку Печать. Там будет длинный список - найди Заявки и последний пункт - Заявки ..... (Детали). В поле Кiл-... будут нецелые значения. Должно быть почти во всех полях - 5. ![]() |
|
Создано: 24 мая 2006 11:32 · Личное сообщение · #25 |
|
Создано: 24 мая 2006 19:44 · Личное сообщение · #26 newborn 1) Нашел я нечто похожее на "бяку" и решил еще раз в базу заглянуть. Так вот, в базе старой версии(где еще не было бяк) в таблице SkladKols в колонке Kol попадается много целых чисел. В базе новой версии эта таблица либо пустая, либо после вызова CCalc.exe заполняется полностью нецелыми числами. Причем дробь вида ххх.148 А вот на печать выдается ххх.3 Т.е. если автор сильно нагадил, то либо он как-то "шифрует" целые числа в базе и непонятно, где искать бяку - с Акцессовской базой он SQL-запросами общается - возможно там он и зашил "конвертор". Короче - большая головная боль. Посмотри все-таки в лицензионной базе эту таблицу ?! 2) Прокоментирую то место, где "гадят". Может кто быстрее меня докопается до сути. ==================================== 005F104C /$ 55 PUSH EBP 005F104D |. 8BEC MOV EBP,ESP 005F104F |. 83C4 F0 ADD ESP,-10 005F1052 |. 53 PUSH EBX 005F1053 |. 894D F4 MOV [LOCAL.3],ECX 005F1056 |. 8955 F8 MOV [LOCAL.2],EDX 005F1059 |. 8945 FC MOV [LOCAL.1],EAX 005F105C |. 8D45 F4 LEA EAX,[LOCAL.3] 005F105F |. E8 AC48E1FF CALL Ccalc.00405910 Здесть грузят название колонки Кол-во. !!!!!!!!!!!!! 005F10C3 |. E8 3C3DE1FF CALL Ccalc.00404E04 2.3 Double Здесь возвращают 2.3 вместо 1 ( это только моя гипотеза), но можно посмотреть, что у вас тут. Вроде с 2.3 лажа - она всегда ее возвращает. Эта прога вызывается много раз из разных мест, но в нашем случае она меняет 'Kol' на 'KOL' - это вроде нормально. 00404E0E . 50 PUSH EAX 00404E0F . 52 PUSH EDX 00404E10 . 8B42 FC MOV EAX,DWORD PTR DS:[EDX-4] 00404E13 . E8 5C000000 CALL Ccalc.00404E74 00404E18 . 89C2 MOV EDX,EAX 00404E1A . 58 POP EAX 00404E1B . 52 PUSH EDX 00404E1C . 8B48 FC MOV ECX,DWORD PTR DS:[EAX-4] 00404E1F . E8 B8E2FFFF CALL Ccalc.004030DC Вот таблица в которой КО . Может тут что найдется. 01005AE8 EA E3 2E 00 D0 4C 00 01 01 00 00 00 03 00 00 00 кг..РL....... 01005AF8 E3 F0 2E 00 D0 4C 00 01 01 00 00 00 02 00 00 00 гр..РL....... ...................................................................... ............................................ 01005B48 41 72 74 00 D0 4C 00 01 01 00 00 00 03 00 00 00 Art.РL....... 01005B58 4B 4F 00 00 D0 4C 00 01 44 44 4D 00 60 97 02 01 KO..РL.DDM.`— ![]() |
|
Создано: 24 мая 2006 20:31 · Поправил: tundra37 · Личное сообщение · #27 005E05BD |> \8B45 E8 |MOV EAX,[LOCAL.6] 005E05C0 |. BA 10095E00 |MOV EDX,Ccalc.005E0910 ; ASCII "KOL" 005E05C5 |. E8 F64BE2FF |CALL Ccalc.004051C0 005E05CA EB 40 JNZ SHORT Ccalc.005E060C ====================================== Вот здесь происходит анализ имени поля, и если оно KOL, то JNZ не срабатывает. Если заменить его на JMP, то все на печати нормально, только поле Кол-во(которое гадится) остается пустым. Стало быть надо анализировать CALL Ccalc.004051C0 - там вроде очень сложная проверка трех букв ![]() Не исключено конечно, что правильное заполнение поля просто отключено аналогичным способом, ну тогда ищем похожую комбинашку : 005DE6DE |> \8B45 E8 |MOV EAX,[LOCAL.6] 005DE6E1 |. BA A4F25D00 |MOV EDX,Ccalc.005DF2A4 ; ASCII "KOL" 005DE6E6 |. E8 D56AE2FF |CALL Ccalc.004051C0 005DE6EB |. 75 31 |JNZ SHORT Ccalc.005DE71E 005DE6ED |. 83BD 68FFFFFF>|CMP [LOCAL.38],0 005DE6F4 |. 74 28 |JE SHORT Ccalc.005DE71E Это место отрабатывает на соседней заявке, где Кол-во правильное. Но на нашей заявке(Детали) сюда мы просто не попадаем. Надо копать почему ![]() ![]() ![]() |
|
Создано: 25 мая 2006 10:53 · Личное сообщение · #28 tundra37 Именно это я копал вчера часа 4. Я думаю всё таки проверка не там, а при загрузке проги, там вроде выше кто-то написал, что на при загрузке с начала всё запрещает, а потом розрешает, только вот тот байт что меняется для запуска проги видать только запускает прогу, а вот идея появилась поискать такое же для печати. Хотя я тут могу дико ошибаться. П.С. Ой щас чуствую получу бан. "Спецы" (у которых ранг 100 и больше) этого форума похоже сюда вообще не заглядывают, у них дела поважнее будут. ![]() ----- ~ the Power Of Reversing team ~ ![]() |
|
Создано: 25 мая 2006 12:02 · Личное сообщение · #29 Непонятно. Даже если вы найдете проверки этих КОЛ, это прогу полностью не оживит. Или я чот не понял. У меня при том патче, что newborn показал, прога запускается, но ни кнопки, ни эдиты не активны. Кто-нить щупал проверку серийника. Вопрос к newborn.Ты с рабочей прогой имеешь дело. Я не могу отловить считывание ключа из окна. Второе. Ключ состоит из символов ABCDEF1234567890, что наводит на мысль, что это не просто ключ, а набор команд. Не понятно только, как команды могут отличаться в зависимости от железа. Хотя - может половина мусора, и всего пара команд нужных для запуска рабочей проги. Попробуй на рабочей проге отследить считывание ключа в память. Думаю, дальше этот ключ по частям помещается куда-то, а вот потом должен идти переход на полнофункциональную прогу. Попробуй это дело отловить. ![]() |
|
Создано: 25 мая 2006 12:54 · Личное сообщение · #30 newborn пишет: с начала всё запрещает Это я и писал. Нас здесь всего трое осталось. newborn пишет: Именно это я копал вчера часа 4. Там вроде ничего не вычисляется, только цифры готовые тащит. Значит будем смотреть, где они вычисляются. Тем более теперь есть с чем сравнивать - рядышком числа целые и правильные. stahh пишет: Кто-нить щупал проверку серийника. Я пытался, но бросил. Похоже там часть информации защифровано, часть хеши всякие. Сам серийник уже есть в ini-файле, только последняя цифра должна быть 3( а не 4). Правда у меня с патчем работало и с 4-кой, только названия фирмы не было. Еще идет привязка к имени компа и номеру диска, но тоже не удалось отследить. Кстати, по адресу 0062F600 - подпрограмма которая все инициализирует и забивать ее не надо. В ней флаг обнуляется( т.е. работать можно), но потом в другом месте устанавливается в 1 - там где патч newborn ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Основной форум —› Немогу отловить передачу данных |
Эта тема закрыта. Ответы больше не принимаются. |