Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Как найти правильный (нужный) вызов процедуры?
Посл.ответ Сообщение

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

Создано: 06 января 2008 16:05
· Личное сообщение · #1

Здравствуйте, я недавно начал разбираться с реверсом программ под Win (есть опыт взлома программ под PalmOS)
вопрос собственно вот в чем, есть старая(1997г) программка под win, представляющая собой оболочку для базы данных, в демо режиме не дает создавать более 6 строк в базе.
все делает "тихо-мирно" не выдавая никаких окошек и предупреждений, просто не добавляет новую строку

программа написана на Delphi4, попытался декомпилировать с помощью DEDE не совсем удачно, но нашел название формы в которой происходит(или не происходит) сохранение.

скормил эту программу IDA, нашел функцию, которая вызывается если в списке больше 6 строк и сохранение не происходит, НО на эту функцию есть Xref с примерно 1500 других мест программы.

как узнать откуда именно идет пересылка?


ps программу в сети не нашел, по причине старости и ограниченной востребованности последней
при необходимости могу выложить эту программку




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 16:15
· Личное сообщение · #2

karim
Здесь лучше всего воспользоваться отладчиком. Поставь бряк на эту процедуру и смотри на адрес возврата.



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

Создано: 06 января 2008 16:26
· Личное сообщение · #3

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




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 16:33
· Личное сообщение · #4

karim
Смотри в стеке.



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

Создано: 06 января 2008 17:41 · Поправил: karim
· Личное сообщение · #5

огроменое спасибо VaZeR вроде потихоньку движется вперед, но
ужас все раскидано по всей программе, вот нашел голову=)

CODE:0049C844 loc_49C844: ; CODE XREF: sub_49C834+84j
CODE:0049C844 xor edx, edx
CODE:0049C846 push ebp
CODE:0049C847 push offset loc_49C86E
CODE:0049C84C push dword ptr fs:[edx]
CODE:0049C84F mov fs:[edx], esp
CODE:0049C852 mov eax, [ebp+var_4]
CODE:0049C855 call sub_49BDF8
CODE:0049C85A mov eax, [ebp+arg_C]
CODE:0049C85D call [ebp+arg_8]
CODE:0049C860 mov [ebp+var_5], 1
CODE:0049C864 xor eax, eax
CODE:0049C866 pop edx
CODE:0049C867 pop ecx
CODE:0049C868 pop ecx
CODE:0049C869 mov fs:[eax], edx
CODE:0049C86C jmp short loc_49C8B4

кажется разобрался, если все в норме то программа проходит всю функцию, если включаются ограничения, то спрыгивает на строке 0049C85D,
немогу понять где идет проверка




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 17:47
· Личное сообщение · #6

karim
Скорее всего чуть выще того перехода который переходит в конец процедуры если есть ограничения. Посмотри из за чего зависит переход.



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

Создано: 06 января 2008 18:13
· Личное сообщение · #7

VaZeR
немогу понять выше чего? которой строки?
вот принтскрин с окошка дебагера,

2733_06.01.2008_CRACKLAB.rU.tgz - 1.jpg



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

Создано: 06 января 2008 18:21
· Личное сообщение · #8

вот листинг всей этой субрутины

4172_06.01.2008_CRACKLAB.rU.tgz - 1.txt




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 18:25
· Личное сообщение · #9

karim
Т.е. Если у тебя нет ограничений то ты попадаешь на один адрес, а если есть то на другой (49С85D). Если адрес один и тот же то смотри тогда эту процедуру там где то и должна быть проверка.
А лучше всего выложи прогу куда нибудь (лучше всего на www.rapidshare.com). А то мне так не понятно, что там и как.



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

Создано: 06 января 2008 18:44
· Личное сообщение · #10

VaZeR
если программа работает как надо, то она построчно проходит все строки в этой функции
если включается ограничение то проходит от начала до CODE:0049C85D call [ebp+arg_8] и пересылается неизвестно куда, (не доходя до конца функции)

ps нужен дистрибутив или исполняемый файл?




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 20:17
· Личное сообщение · #11

karim
Выложи дистрибутив.



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

Создано: 06 января 2008 21:44
· Личное сообщение · #12

скинул в приват




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 06 января 2008 22:26 · Поправил: VaZeR
· Личное сообщение · #13

Попробуй вот этот патч:
rapidshare.com/files/81781752/patch.7z.html



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

Создано: 06 января 2008 23:02
· Личное сообщение · #14

большое спасибо
с нашей сети на Rapid не пускают...
можно на ящик?



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

Создано: 07 января 2008 02:42
· Личное сообщение · #15

... у нас с тобой VaZeR мысли в такт идут, пока ждал людей которые могут скачать с рапиды, сам сидел ковырялся, и после пропатчивания патчем файлы сошлись бит к биту, НО программа всеравно работает в тестовом режиме, позволяет создавать только 6 строк,

CODE:004C6923 push edi
CODE:004C6924 xor ebx, ebx
CODE:004C6926 mov [ebp+var_94], ebx
CODE:004C692C mov [ebp+var_98], ebx
CODE:004C6932 test dl, dl
CODE:004C6934 jz short loc_4C693E
CODE:004C6936 add esp, 0FFFFFFF0h
CODE:004C6939 call sub_403408


JZ поменял JMP (кажется EB на 74 по адресу С5С1С)

ХЗ куда дальше копать




Ранг: 88.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 07 января 2008 16:21
· Личное сообщение · #16

karim
Если ещё нужен патч. Да там действительно есть проверка на 6 строк. У меня с этим патчем вроде все нормально работает


1c17_07.01.2008_CRACKLAB.rU.tgz - patch.7z



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

Создано: 07 января 2008 21:50
· Личное сообщение · #17

еще раз огромное спасибо,
буду сидеть изучать механизм работы


 eXeL@B —› Вопросы новичков —› Как найти правильный (нужный) вызов процедуры?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати