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

 eXeL@B —› Вопросы новичков —› Строки OllyDbg
Посл.ответ Сообщение

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

Создано: 10 апреля 2011 09:16
· Личное сообщение · #1

В программе надо заменить строку текста.
строка задана в таком виде:
65AADE 74 00 74 00 70 00 3A 00
меняю через Dump, там заменяю строку на нужные ASCII символы, при этом дизасемблированный код меняется на кучу каких-то интсрукций. При запуске мои изменения не срабатывают.
Как-то можно нормально строку текста заменить?



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 10 апреля 2011 09:31 · Поправил: VodoleY
· Личное сообщение · #2

Reef в Hiew

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 10 апреля 2011 09:35
· Личное сообщение · #3

Reef пишет:
74 00 74 00 70 00 3A 00 ...

похоже что это unicode строка ttp:
пиши просто строку в unicode



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

Создано: 10 апреля 2011 09:39 · Поправил: Reef
· Личное сообщение · #4

Да, это unicode, пробовал и в unicode менять, появляется тоже самое.
до изменений строка выглядит так
65AADE | 74 00 74 00 70 00 3A 00 | UNICODE "http://" <-дизасемблерная строка
после изменений появляется куча команд, т.е. они уже воспринимаются не как юникод строка, а как команды ассемблера, меняю я юникод символ на нужную мне букву в ASCII, а появляется команда допустим popad.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 10 апреля 2011 09:53
· Личное сообщение · #5

Куча инструкций - потому что строка лежит в секции кода и оля видать не проанализировала код. Лечится Ctrl+A.
Раз изменения не срабатывают, значит этот код и не выполняется, ищи еще похожие строки.

| Сообщение посчитали полезным: Reef

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

Создано: 10 апреля 2011 10:55 · Поправил: Reef
· Личное сообщение · #6

Не срабатывают в плане того, что программа просто вылетает.
ctrl+a проходит.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 10 апреля 2011 11:03
· Личное сообщение · #7

Reef
Вы учили, что UNICODE строка оканчивается двумя zero байтами?



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

Создано: 10 апреля 2011 11:14
· Личное сообщение · #8

Не учил, но догадался по коду. Ну вот к примеру, какой должен быть алгоритм моих дейтвий?
-провожу поиск по коду: search for->all referenced strings
-нахожу нужную строку типа unicode"text"
Как мне теперь её поменять? Меняя даже 1 символ(через binary edit), и оставляя 00 в строке, все равно получаю после изменения кучу инструкций.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 10 апреля 2011 11:15 · Поправил: VodoleY
· Личное сообщение · #9

Reef блин если ты считаеш что вылетает изза твоего патча, поставь бряк на эти байты, и посмотри. как используется эти данные, как вариант ты не то место патчиш. а по поводу кучи команд...
есть различные представления данных их можно рассматривать как байт как чар как юникоде чар, а также как команда на асме, ничего страшного в этом я не вижу что олька начала их как кусок кода распозновать, если все правильно ты нашел, то этот кусок как быкода просто никогда не выполняеца

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 65.3 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 10 апреля 2011 11:17
· Личное сообщение · #10

А так же то, что менять на просто ASCII нельзя. Юникод двухбайтный. И если поменять на чистую ASCII строку, функции многие обломаются. (два ненулевых байта подряд будут интерпретированы как юникодный символ черте-чего, если вообще как валидный символ).



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

Создано: 10 апреля 2011 11:39
· Личное сообщение · #11

Данные эти точно используются.
Короче, может плохо объясняю, сделал скриншот:





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 10 апреля 2011 12:04
· Личное сообщение · #12

Просто после изменений дизасм не проанализировал код.

-----
Yann Tiersen best and do not fuck


| Сообщение посчитали полезным: Reef

Ранг: 65.3 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 10 апреля 2011 12:06
· Личное сообщение · #13

Может, контроль целостности программы?
То, как олли интерпретирует байты, не влияет на выполнение программы. Скорее всего, программа где-то читает себя и проверяет контрольную сумму.



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

Создано: 10 апреля 2011 12:09 · Поправил: Reef
· Личное сообщение · #14

PE_Kill
Спасибо)
Именно это мне нужно было), буду дальше тестировать.
Veliant оказывается тоже самое писал, просто не догнал, что после изменений надо проверять.


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


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