Сейчас на форуме: asfa (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› OllyDBG. Unable to read memory of debugged process. |
Посл.ответ | Сообщение |
|
Создано: 20 июня 2010 07:45 · Личное сообщение · #1 Ломаю 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'а с помощью той же Ольки). ![]() |
|
Создано: 20 июня 2010 08:05 · Личное сообщение · #2 |
|
Создано: 20 июня 2010 10:20 · Личное сообщение · #3 another_fresh_meat пишет: Есть и другой путь, который пока ничего не дал. В данном случае "другим путем" проще всего дойти до результата. После возврата из MessageBox можно, пройдясь по стеку, увидеть свой пароль выше возврата из текущей процедуры. Поэтому напрашивается предположение, что сравнение делается где-то раньше. Если по F8 сделать несколько шагов, то через 2 retn-а окажемся в нужном месте и увидим сравнение своего пароля со всеми 3-мя правильными. Ну, а есть ли что-нибудь в этом "архиве", легко понять: 1) Почитав "соглашение". 2) Посмотрев, что происходит в процессе "извлечения файлов" до того, как предлагается ввести 1-ый пароль. ![]() |
|
Создано: 20 июня 2010 16:30 · Поправил: another_fresh_meat · Личное сообщение · #4 Archer, в смысле, олька неправильно определила адрес соотв. колбэка? Prober, сэнкс! Действительно, я был в 2-х шагах. Удивительно, что все три пароля захардкожены. И все же первый вопрос остается в силе. Что не понравилось ольке когда я пытался поставить message breakpoint? Почему это она не может прочитать память процесса? Было бы познавательно разобраться. Видно, что адрес почти на самой верхушке адресного пространства. Что там такое есть? Туда же вроде винда маппится, если я не ошибаюсь? ![]() |
|
Создано: 20 июня 2010 16:52 · Личное сообщение · #5 |
|
Создано: 20 июня 2010 19:49 · Личное сообщение · #6 |
|
Создано: 20 июня 2010 21:00 · Личное сообщение · #7 |
|
Создано: 24 сентября 2010 12:36 · Личное сообщение · #8 Archer пишет: Адреса процедур оконных она неправильно определяет зачастую. Смотри адреса другим софтом/юзай другой способ. Проблема решается проще, неверно показываются ClsProc в Ольке из-за небольшого бага в программе, Оля юзает GetClassLongA, и не все WinProc верно определяются. Поэтому поступил просто, в хекс-редакторе просто нашел название этой функции в OllyDbg.exe и заменил одну букву A на W, т.е. фукция в импорт тайбл в транке стала называтся GetClassLongW. После этого корректно стали отображаться ClsProc. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› OllyDBG. Unable to read memory of debugged process. |