![]() |
eXeL@B —› Вопросы новичков —› Как найти правильный (нужный) вызов процедуры? |
Посл.ответ | Сообщение |
|
Создано: 06 января 2008 16:05 · Личное сообщение · #1 Здравствуйте, я недавно начал разбираться с реверсом программ под Win (есть опыт взлома программ под PalmOS) вопрос собственно вот в чем, есть старая(1997г) программка под win, представляющая собой оболочку для базы данных, в демо режиме не дает создавать более 6 строк в базе. все делает "тихо-мирно" не выдавая никаких окошек и предупреждений, просто не добавляет новую строку программа написана на Delphi4, попытался декомпилировать с помощью DEDE не совсем удачно, но нашел название формы в которой происходит(или не происходит) сохранение. скормил эту программу IDA, нашел функцию, которая вызывается если в списке больше 6 строк и сохранение не происходит, НО на эту функцию есть Xref с примерно 1500 других мест программы. как узнать откуда именно идет пересылка? ps программу в сети не нашел, по причине старости и ограниченной востребованности последней при необходимости могу выложить эту программку ![]() |
|
Создано: 06 января 2008 16:15 · Личное сообщение · #2 |
|
Создано: 06 января 2008 16:26 · Личное сообщение · #3 |
|
Создано: 06 января 2008 16:33 · Личное сообщение · #4 |
|
Создано: 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, немогу понять где идет проверка ![]() |
|
Создано: 06 января 2008 17:47 · Личное сообщение · #6 |
|
Создано: 06 января 2008 18:13 · Личное сообщение · #7 VaZeR немогу понять выше чего? которой строки? вот принтскрин с окошка дебагера, ![]() ![]() |
|
Создано: 06 января 2008 18:21 · Личное сообщение · #8 |
|
Создано: 06 января 2008 18:25 · Личное сообщение · #9 karim Т.е. Если у тебя нет ограничений то ты попадаешь на один адрес, а если есть то на другой (49С85D). Если адрес один и тот же то смотри тогда эту процедуру там где то и должна быть проверка. А лучше всего выложи прогу куда нибудь (лучше всего на www.rapidshare.com). А то мне так не понятно, что там и как. ![]() |
|
Создано: 06 января 2008 18:44 · Личное сообщение · #10 |
|
Создано: 06 января 2008 20:17 · Личное сообщение · #11 |
|
Создано: 06 января 2008 21:44 · Личное сообщение · #12 |
|
Создано: 06 января 2008 22:26 · Поправил: VaZeR · Личное сообщение · #13 |
|
Создано: 06 января 2008 23:02 · Личное сообщение · #14 |
|
Создано: 07 января 2008 02:42 · Личное сообщение · #15 ... ![]() ![]() 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С) ХЗ куда дальше копать ![]() |
|
Создано: 07 января 2008 16:21 · Личное сообщение · #16 karim Если ещё нужен патч. Да там действительно есть проверка на 6 строк. У меня с этим патчем вроде все нормально работает ![]() ![]() |
|
Создано: 07 января 2008 21:50 · Личное сообщение · #17 |
![]() |
eXeL@B —› Вопросы новичков —› Как найти правильный (нужный) вызов процедуры? |
Эта тема закрыта. Ответы больше не принимаются. |