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

 eXeL@B —› Вопросы новичков —› OllyDBG. Unable to read memory of debugged process.
Посл.ответ Сообщение

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

Создано: 20 июня 2010 07:45
· Личное сообщение · #1

Ломаю экзешник при помощи Ольки. Пытаюсь поставитьMessage breakpoint on ClassProc на кнопку "Продолжить", при нажатии на которую, предположительно, проверяется пароль. Результат следующий. При выборе соотв. пункта меню олька нервничает и пишет предупреждение:

Suspicious breakpoint! You want to place breakpoint outside the code section. INT3 breakpoint set on data will not execute and may have disastorous influence on the debugged program. Do you want to set breakpoint, you motherfucker?

При попытке поставить бряк с параметрами Messages = 202 WM_LBUTTONUP, break on any window, Pause program on message, log WinProc on Message, Pass count = 0 Олька матерится в очередном диалоге:

Error! Unable to read memory of debugged process. Breakpoint at FFFF0197 is deleted.

Вопрос: как поставить бряк на мессагу в этом случае?

Для тех, кто не хочет качать 13 метров этого го*на, опишу, что оно из себя представляет. О себе экзешник заявляет, что он самораспаковывающийся архив ZIP-Folder ver.3.02.9109, в прочем, это не обязательно так. Так же утверждается, что в нем лежит контент, который весит в 10(!) раз больше самого экзешника (стопудовое на*балово!!!). Требует отправить смс с текстом на номер, чтобы получить пароль. Имеется поле для ввода пароля и кнопака "продолжить". При нажатии на кнопку выводится ругательное сообщение "Вы ввели неправильный пароль".

Есть один нюанс. Пароль может потребоваться для правильной распаковки архива, это понятно. Тогда ломать смысла нет. Если кто-то точно знает, что это так, пожалуйста ответьте! И, всё же, свободное распространение "архива" говорит об обратном. Иначе прибыльное дело можно было бы легко убить простой публикацией соотв. паролей, что нежелательно для распространителей.

Есть и другой путь, который пока ничего не дал. Ищу ругательную строку "Вы ввели неправильный пароль", ставлю Memory, on access, брякаюсь где-то в USER32. Жму Debug->Execute till user code, после чего оказываюсь инструкцией ниже от CALL <JMP.&user32.MessageBoxW>. Нашел первую инструкцию в вышележащем участке кода, на которую первую передается у правление при нажатии на "Продолжить" (через жопу, конечно: забрячил двадцатку инструкций выше :D). Участок кода между этой инструкцией и CALL <JMP.&user32.MessageBoxW> содержит несколько вызовов собственных функций и единственный(!) условный переход, перепрыгивающий один XOR (силовое вмешательство в этот переход дало лишь косяки в отображении диалога). Значит, проверка пароля, скорее всего осуществляется ДО этого участка кода. Как узнать, кто на него прыгает - для меня загадка. Адрес первой инструкции, скорее всего, вычисляется, так как поиск по абсолютному значению ничего не дал. В общем-то, все. Поэтому пробую ставить бряк на мессагу и весело брею бороду.

Разумеется, контент, который якобы запакован в экзешнике, мне не нужен. Хочется море экспы и levelUp.
О себе: ориентируюсь в x86, на уровне новичка работаю в Ольке, опыт взлома минимален (crackme cruehead'а с помощью той же Ольки).




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июня 2010 08:05
· Личное сообщение · #2

Адреса процедур оконных она неправильно определяет зачастую. Смотри адреса другим софтом/юзай другой способ.



Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 20 июня 2010 10:20
· Личное сообщение · #3

another_fresh_meat пишет:
Есть и другой путь, который пока ничего не дал.

В данном случае "другим путем" проще всего дойти до результата. После возврата из MessageBox можно, пройдясь по стеку, увидеть свой пароль выше возврата из текущей процедуры. Поэтому напрашивается предположение, что сравнение делается где-то раньше. Если по F8 сделать несколько шагов, то через 2 retn-а окажемся в нужном месте и увидим сравнение своего пароля со всеми 3-мя правильными.

Ну, а есть ли что-нибудь в этом "архиве", легко понять:
1) Почитав "соглашение".
2) Посмотрев, что происходит в процессе "извлечения файлов" до того, как предлагается ввести 1-ый пароль.



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

Создано: 20 июня 2010 16:30 · Поправил: another_fresh_meat
· Личное сообщение · #4

Archer, в смысле, олька неправильно определила адрес соотв. колбэка?

Prober, сэнкс! Действительно, я был в 2-х шагах. Удивительно, что все три пароля захардкожены.

И все же первый вопрос остается в силе. Что не понравилось ольке когда я пытался поставить message breakpoint? Почему это она не может прочитать память процесса? Было бы познавательно разобраться. Видно, что адрес почти на самой верхушке адресного пространства. Что там такое есть? Туда же вроде винда маппится, если я не ошибаюсь?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 20 июня 2010 16:52
· Личное сообщение · #5

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



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

Создано: 20 июня 2010 19:49
· Личное сообщение · #6

Блин чтото с олькой произошло терь как только в неё запихиваеш файл выдаёт unable to write memory of debugged process (7ffde002..7ffde002) но после как жмёш ок то всё работает норм,но всёже бесит ошибка,кто подскажет что случится могло?



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 20 июня 2010 21:00
· Личное сообщение · #7

Barma --> первая страница <-- там есть ответ проверял



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

Создано: 24 сентября 2010 12:36
· Личное сообщение · #8

Archer пишет:
Адреса процедур оконных она неправильно определяет зачастую. Смотри адреса другим софтом/юзай другой способ.

Проблема решается проще, неверно показываются ClsProc
в Ольке из-за небольшого бага в программе, Оля юзает GetClassLongA, и не все WinProc верно определяются. Поэтому поступил просто, в хекс-редакторе просто нашел название этой функции в OllyDbg.exe и заменил одну букву A на W,
т.е. фукция в импорт тайбл в транке стала называтся GetClassLongW.
После этого корректно стали отображаться ClsProc.

| Сообщение посчитали полезным: Autokent
 eXeL@B —› Вопросы новичков —› OllyDBG. Unable to read memory of debugged process.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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