| Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых) | 
| eXeL@B —› Основной форум —› Olly (Unknown Command) | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 27 февраля 2005 19:13  · Личное сообщение · #1 подскажите новичку пожалуйста - что делать с Unknown Command в Olly дебаггере.... почему он их не распознает?... и еще вопрос - можно ли поставить корректный брейк на возврат функции (как в TD например).... я отлаживаю DOS программу... F8 циклится на куске 00000B28 2E:FE ??? ; Unknown command 00000B2A D328 SHR DWORD PTR DS:[EAX],CL 00000B2C 2E:FE ??? ; Unknown command 00000B2E D328 SHR DWORD PTR DS:[EAX],CL 00000B30 2E:FE ??? ; Unknown command 00000B32 D7 XLAT BYTE PTR DS:[EBX+AL] 00000B33 282E SUB BYTE PTR DS:[ESI],CH 00000B35 FE ??? ; Unknown command 00000B36 D328 SHR DWORD PTR DS:[EAX],CL 00000B38 2E:FE ??? ; Unknown command 00000B3A D328 SHR DWORD PTR DS:[EAX],CL 00000B3C 2E:FE00 INC BYTE PTR CS:[EAX] 00000B3F 0037 ADD BYTE PTR DS:[EDI],DH 00000B41 0305 00060002 ADD EAX,DWORD PTR DS:[2000600]ожидая ввода.... я утанавливаю Till Ret.... перехожу в программу - ввод недоступен... а если останавливаю и выбираю Run - то проскакиваю нужное место и программа выдает "ПАРОЛЬ НЕВЕРНЫЙ".... не бейте сильно - я в этом деле новичок  ....
помогите пожалуйста....
![]()  | 
| 
 | 
Создано: 27 февраля 2005 19:19  · Личное сообщение · #2  | 
| 
 | 
Создано: 27 февраля 2005 19:25  · Личное сообщение · #3  | 
| 
 | 
Создано: 27 февраля 2005 19:28  · Личное сообщение · #4  | 
| 
 | 
Создано: 27 февраля 2005 19:30  · Личное сообщение · #5  | 
| 
 | 
Создано: 27 февраля 2005 19:45  · Личное сообщение · #6  | 
| 
 | 
Создано: 27 февраля 2005 20:32  · Личное сообщение · #7  | 
| 
 | 
Создано: 27 февраля 2005 20:34  · Личное сообщение · #8  | 
| 
 | 
Создано: 27 февраля 2005 20:36 · Поправил: Ara  · Личное сообщение · #9  | 
| 
 | 
Создано: 27 февраля 2005 20:57 · Поправил: JsK  · Личное сообщение · #10  | 
| 
 | 
Создано: 27 февраля 2005 21:04  · Личное сообщение · #11  | 
| 
 | 
Создано: 27 февраля 2005 21:10  · Личное сообщение · #12  | 
| 
 | 
Создано: 27 февраля 2005 21:12  · Личное сообщение · #13  | 
| 
 | 
Создано: 27 февраля 2005 21:13  · Личное сообщение · #14  | 
| 
 | 
Создано: 27 февраля 2005 21:15  · Личное сообщение · #15 другая проблема... после запуска под DLDR.... моя программа выдает... Memory used by program=69424 то есть ей нужно 260 чтобы работать, в досе всего 640, 570 как видно жрет SI.... что делать?...=(... у меня такая же ошибка возникала с ранней версией TD, но в версии 5.5 исчезла, т.к. там используется TDX меньшего размера для загрузки... ![]()  | 
| 
 | 
Создано: 27 февраля 2005 21:25 · Поправил: JsK  · Личное сообщение · #16 Ara ТД - гут... но я никак не могу найти в нем свой ключевой момент...  .. возможно сказывается недостаток опыта....
задача вообще тривиальная - нужно найти место где введенные данные (7 чисел) сравниваются с заданными и подсмотреть последние..... происходит это так... по адресу 051С находится функция, которая последовательно запрашивает семь строк, а потом задает вопрос "данные верны?" и ждет нажатия enter... после чего - программа всплывает на функции в 0568, если войти в которую выдается сообщение "пароль неверный" а по нажатию enter программа всплывает на следующей строке - 058B с которой уже все повторяется.... ввиду описанного я пытаюсь ловить сравнения на промежутке между 051С (каллит функцию ввода данных на 3D41) и 058B (уже после проверки и вердикта)..... пытался установить функцию в которой это происходит или даже искать нужный cmp...х(... проблема осложняется тем, что данные перед сравненим могут быть преобразованы (только нафига?..)... думал в других отладчиках код попонятнее представлен (как в Олли или в ИДЕ)... или есть функция логирования каждого шага (можно было бы прогнать весь этот момент а потом анализировать распечатки).... или функция "бежать до сравнения заданных значений"... но такого я в ТД не нашел...  ...
а функция "Exec to Ret" по-моему вообще не работает :\... помогите пожалуйста - дайте наметку, как лучше справить с этой задачей ??....  
![]()  | 
| 
 | 
Создано: 27 февраля 2005 21:42  · Личное сообщение · #17  | 
| 
 | 
Создано: 27 февраля 2005 21:43  · Личное сообщение · #18 есть некоторые успехи...  ...
seg001:051C call dword ptr [di+1Ch] эта функция соответстует вводу значений seg001:051F mov [bp+var_1], al seg001:0522 call @ClrScr$qv ; ClrScr(void) это очистка экрана, не рассматриваем seg001:0527 cmp [bp+var_1], 0 seg001:052B jz loc_10BCD здесь сравниваются два ноля. попробовал сбросить Zв итоге программа сказала "ок. пароль верный."... значит можно сделать вывод что сравнение находится в функции по адресу 3D41... ![]()  | 
| 
 | 
Создано: 27 февраля 2005 21:46  · Личное сообщение · #19  | 
| 
 | 
Создано: 27 февраля 2005 22:06  · Личное сообщение · #20  | 
| 
 | 
Создано: 27 февраля 2005 23:01  · Личное сообщение · #21 порядок такой... запускаешь... три раза эникей... выбираешь фамилию (например Менделеев ;)...энтер... выбираешь задание (должно быть из группы R или K)... энтер... на вопрос о правильности - да.. энетр... второй пункт - "проверка результатов"... энтер... последовательно вводишь семь значений.... на вопрос "есть ли еще член" - нет... энтер... и тут он говорит резолюцию - ОТВЕТ НЕВЕРНЫЙ!.... нужно узнать - какие числа в него вводить чтобы получить верный ответ.... разумеется - чтобы можно было установить для любой другой фамилии... а вообще - идеально было бы чтобы он не спрашивал ответы, а называл их ;)... но с моими знаниями ассемблера - остается только мечтать об этом...   a694_ostudnt.zip
![]()  | 
| 
 | 
Создано: 27 февраля 2005 23:12 · Поправил: JsK  · Личное сообщение · #22 все сводится к тому, что функция которую мы запрашиваем на 051С должна вернуть TRUE.... исследуемый участок (внутри этой функции, начинающейся на 3D41) - от 3F39 (ввода первых данных, по-видимому массива), до 41B8 (нажатия кнопки "НЕТ" после которой логичнее всего должно находиться сравнение с правильным вариантом) и до 4219 - точки возврата.... ![]()  | 
| 
 | 
Создано: 27 февраля 2005 23:31  · Личное сообщение · #23  | 
| 
 | 
Создано: 28 февраля 2005 00:11  · Личное сообщение · #24  | 
| 
 | 
Создано: 28 февраля 2005 00:15  · Личное сообщение · #25  | 
| 
 | 
Создано: 28 февраля 2005 01:23  · Личное сообщение · #26  | 
| 
 | 
Создано: 28 февраля 2005 07:20  · Личное сообщение · #27  | 
| 
 | 
Создано: 28 февраля 2005 18:11  · Личное сообщение · #28  | 
| 
 | 
Создано: 28 февраля 2005 18:56  · Личное сообщение · #29 а что непосредственно перед запуском выдает mem ?... должно быть не меньше вышеназванной суммы.... (?) а вообще - существует ли отладчик позволяющий логгировать все выполняемые команды (ну или хотя бы адреса)... можно было бы распечатать кусок файла с наиболе вероятным местом проверки.... даже сравнить с ответами одного решенного варианта..... ![]()  | 
| eXeL@B —› Основной форум —› Olly (Unknown Command) | 

....
помогите пожалуйста....








...
 
 Для печати