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 ~ |
|
Создано: 25 мая 2006 17:16 · Личное сообщение · #2 00619F05 |. 8B45 FC MOV EAX,[LOCAL.1] 00619F08 |. 8B55 F4 MOV EDX,[LOCAL.3] 00619F0B |. 8B4A 20 MOV ECX,DWORD PTR DS:[EDX+20] 00619F0E |. 8948 20 MOV DWORD PTR DS:[EAX+20],ECX 00619F11 |. 8B4A 24 MOV ECX,DWORD PTR DS:[EDX+24] 00619F14 |. 8948 24 MOV DWORD PTR DS:[EAX+24],ECX ========================== Вот тут происходит пересылка данных. Существует магическое число 1.298 - оно заменяет 1 в "порченных количествах". Сейчас проверю, что будет если поставить условный останов и поголовную замену 1.298 на 1. Просто уже замучился отлавливать источник - прошел только одну пересылку. Олька уже два раза висла Если моя гипотеза правильная, то вместо 7.3 получится 7 ( где-то еще 0.298 набрасывается). Портится по формуле округляем[N*(1+e)+0.4999999] +e , где e=0.298 Если е заменить на 0, то все будет правильно считать. Осталось найти откуда оно берется. Кажись понял - из кода. Для правильного кода получается 0, а для неправильного - у всех разное к сожалению. |
|
Создано: 25 мая 2006 17:57 · Поправил: tundra37 · Личное сообщение · #3 |
|
Создано: 26 мая 2006 18:17 · Личное сообщение · #4 Докопал однако. Если newborn разрешит, могу опубликовать. Защита сделана так : 4 байта зашиты в код программы вместе с именем фирмы , а еще 4 байта получаются через привязку к железу(это пока гипотеза, т.к. лень ковырять). Из этих двух двойных слов получают число меньшее 1(зависит от того как железо поменялось) и прибавляют его к части целых чисел, при вычислении числа деталей( но явно не всегда). Если обойти добавление - графа Кол-во(см. первый пост в топике) становится целой и правильной. Прослеживать обработку рег. кода теперь можно, т.к. я нашел место где он используется и дальше уже дело техники. Правда он там столько раз копируется на стек, что в глазах рябит, а обрабатывается только малая часть копий. Застрелишься трассировать |
|
Создано: 26 мая 2006 20:09 · Личное сообщение · #5 |
|
Создано: 26 мая 2006 20:58 · Личное сообщение · #6 |
|
Создано: 29 мая 2006 13:09 · Личное сообщение · #7 |
|
Создано: 29 мая 2006 13:26 · Личное сообщение · #8 |
<< . 1 . 2 . |
eXeL@B —› Основной форум —› Немогу отловить передачу данных |
Эта тема закрыта. Ответы больше не принимаются. |