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

 eXeL@B —› Вопросы новичков —› Ошибка в скрипте (Olly srcipt)
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 августа 2007 13:44 · Поправил: Verelex
· Личное сообщение · #1

Здравствуйте.
Мне требуется поставить бряк на адрес в стеке и когда значение по этому адресу будет == 1В92 занести в LOG адрес останова или приостановить программу.
Составил вот такой скрипт(не работающий):
---
start:
bplcnd 0012E440, "[0012E440]", "[0012E440] == 1D92"
run
ret
---
В чем ошибка?



Ранг: 35.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 августа 2007 15:36
· Личное сообщение · #2

Синтаксис:
BPCND адрес,"условие" // Условие должно быть помещено в кавычки

Взято из справки, которую перевел Внекрилов.

А у тебя bplcnd .
"[0012E440]" это похоже лишнее.
В тексте написано 1В92, а в скрипте 1D92.



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 августа 2007 08:09 · Поправил: Verelex
· Личное сообщение · #3

>BPCND адрес,"условие" // Условие должно быть помещено в кавычки
А что делает, этот код (скрипт)? -просто ставит бряк если выполнено условие и продолжает выполнение программы или как?
Или выполнение останавливается на этом бряке?
переделал код так:
start:
bpcnd 0012E440, "[0012E440] == 00001D92"
run

но тоже не работает. Есть предположение, что он не понимает квадратные скобки. В примерах показан "eax == 0" т.е. прямое значение, а у меня по адресу.
Но я точно знаю, что в ходе выполнения программы значение 00001D92 появляется по адресу 0012E440.

Еще одно предположение:
BPCND addr, cond - Set breakpoint on address addr with condition cond.
Т.е. получается, что идет проверка "[0012E440] == 00001D92" и если успешно, ставится бряк, но эти инструкции уже выполнены, т.к. адрес используется в условии.
Поэтому я решил использовать
BPLCND addr, expr, cond - Sets logging breakpoint at address addr that logs expression expr if condition cond is true
bplcnd 0012E440, "[0012E440]", "[0012E440] == 1D92"
но в лог ничего не добавлялось, значит вообще все неверно. Как быть?

>В тексте написано 1В92, а в скрипте 1D92.
Это я поторопился и на англ. не переключил. (правильно 00001D92)

Спасибо за ответ.



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 09 августа 2007 09:48
· Личное сообщение · #4

Я чайник, так что просьба не пинать, если что-то не так скажу.
Бряки, которые ты ставишь подразумевают, что программа быдет выполняться по этим адресам. То есть такой бряк, какой ты ставишь можно поставить только в секции кода. А ты ставишь бряк на адреса в стэке и ждешь, пока пока программа будет их выполнять.
Я бы попробовал поэкспериментировать с такими командами:
bphws
bpwm
это бряки на запись в ячейку с определенным адресом. И проверять, что именно записывается.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 09 августа 2007 15:16
· Личное сообщение · #5

Amok пишет:
Взято из справки, которую перевел Внекрилов.

Где взять?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 35.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 09 августа 2007 17:09
· Личное сообщение · #6

Isaev
В архиве лежит редактор для скриптов и упомянутая справка. 1МВ
_http://team-x.ru/guru-exe/Tools/Misc/ODSE/OllyDbgScriptEditor%20v1.2. rar




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 10 августа 2007 07:16
· Личное сообщение · #7

Вот спасибо, и чего мне это раньше не попалось?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 августа 2007 02:35
· Личное сообщение · #8

У меня такая проблема. В EAX хранится указатель на строку. Мне нужно данную строку вывести в лог.
var x
mov x, [eax]

такая команда помещает в x только 4 байта в обратном порядке

И еще. Не подскажет ли кто нить где взять мануал на команды скриптовые. Английский вариант тоже подойдет. У меня ODBGScript 1.6. Там много чего нового, а вот даже синтаксиса команд негде узнать



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 18 августа 2007 13:01
· Личное сообщение · #9

cs137 пишет:
где взять мануал на команды

Можешь скачать редактор скриптов по ссылке, которую привел Amok. Там и описание и синтаксис.



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 августа 2007 00:48
· Личное сообщение · #10

Sturgeon, спасибо! Но там команды только для 0.92, а мне нужно было для 1.64. Я нашел синтаксис комманд, оказывается он в ReadMe.txt есть Не поглазам мне было. Все равно спасибо за прогу



Ранг: 35.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 19 августа 2007 10:36
· Личное сообщение · #11

cs137 пишет:
У меня такая проблема. В EAX хранится указатель на строку. Мне нужно данную строку вывести в лог.
var x
mov x, [eax]


Попробуй так
var x
mov x,eax
log x



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 августа 2007 14:01
· Личное сообщение · #12

Amok, спасибо большое. Действительно помогло


 eXeL@B —› Вопросы новичков —› Ошибка в скрипте (Olly srcipt)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати