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

 eXeL@B —› Вопросы новичков —› Crackme REV или куда ехать дальше?
Посл.ответ Сообщение

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

Создано: 16 июня 2015 02:00 · Поправил: KrakenFloo
· Личное сообщение · #1

Здравствуйте!
Я человек начинающий, но успешно капающих инфу в гугле, так вот...
Исследую программу Rev.exe взятую --> Отсюда <--
И все бы хорошо, но я застопорился на одном моменте.
00401078 . 3D F700FB02 CMP EAX,2FB00F7
EAX = BAD0DEAD
Логично предположить, что 2FB00F7 получается в результате неких вычислений над вводимым нами ключом, а BAD0DEAD стеб программиста)
Я начал с простого и решил отследить, куда же помещается значение вводимое мной, пробуя и цифры 0-9 и буквы, зная что a = 61h , A = 41h к примеру, но все без успешно. Не в регистрах, не в стеке, не в дампе этих значений я не нашел.
Т.к. этого мне сделать не удалось, я решил все-таки выяснить, что же такое BAD0DEAD, как оказалось - Изначально оно просто заталкивается в кучу, после проверки пароля на правильность и результат отрицательный, то банально выталкивалось оттуда :/
Ладно, попытка №3 разобраться с этой программкой тоже оказалась относительно безуспешной.
А именно... постепенно трассируя, я выдал предположение, что это где-то здесь (77358FE9 E8 7C930000 CALL USER32.SetWindowTextA) , но никак не могу понять как именно и где конкретно.

С ув.Kraken






Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 16 июня 2015 02:14
· Личное сообщение · #2

Обрати внимание на команду pop eax, которая означает, что в регистр eax помещается значение из стека, которое ранее было туда помещено командой push. Изучай код в IDA, в ней гораздо нагляднее.
Обрати внимание на процедуру, вызывающую CallNextHookEx (sub_4011C0).

-----
EnJoy!




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

Создано: 16 июня 2015 14:12 · Поправил: KrakenFloo
· Личное сообщение · #3

Jupiter пишет:
Обрати внимание на команду pop eax

Обратил внимание и нашел.
00401051 . FF35 FF304000 PUSH DWORD PTR DS:[4030FF]

Но какой-то пользы от этого нету, оно просто выталкивается из кучи потом.
Странно только, что после этого он заново записывается О_о
00401057 . C705 FF304000 >MOV DWORD PTR DS:[4030FF],BAD0DEAD

Jupiter пишет:
Обрати внимание на процедуру, вызывающую CallNextHookEx (sub_4011C0)

Я не обнаружил процедуру которая ее вызывает, т.к. поставив бряк на эту функцию, программа работала вполне нормально и без нее...



Ах да, программа после 3х попыток крашится на этой строчке
004010FD F0:0FC7C8 LOCK CMPXCHG8B EAX ; Illegal use of register
Решил заNOP'ать 004010FD - 0040110F, больше приложение не крашится.

p.s. IDA отличный выбор, но как по мне, оля вполне удобна для анализа.



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

Создано: 16 июня 2015 14:49 · Поправил: hlmadip
· Личное сообщение · #4

А если функция SetWindowsHookExA в eax возвращает 0, то это значит хук не поставлен и фиг у меня этот кракми нормально заработает?
Upd: Win 7 x64




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 16 июня 2015 14:56
· Личное сообщение · #5

KrakenFloo пишет:
IDA отличный выбор, но как по мне, оля вполне удобна для анализа

Для мелочи пойдёт олька, когда начнёшь реверсить что то крупное сам прийдёшь к иде...

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




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

Создано: 16 июня 2015 14:56 · Поправил: KrakenFloo
· Личное сообщение · #6

Вот приложение подлеченное от краша.

9091_16.06.2015_EXELAB.rU.tgz - Rev-anticrash.exe

hlmadip пишет:
А если функция SetWindowsHookExA в eax возвращает 0, то это значит хук не поставлен и фиг у меня этот кракми нормально заработает?
Upd: Win 7 x64


У меня тоже эта функция возвращает 0. Win7 x32




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 16 июня 2015 19:07
· Личное сообщение · #7

Дело не в вызове API, а в самой функции, внутри которой идет вызов данной API

-----
EnJoy!




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

Создано: 16 июня 2015 19:18
· Личное сообщение · #8

А чем ИДА хороша? Она разве не только дизасм?



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

Создано: 16 июня 2015 19:40
· Личное сообщение · #9

Jupiter пишет:
Дело не в вызове API, а в самой функции, внутри которой идет вызов данной API

Поправте, если не прав:
call SetWindowsHookExA устанавливает хук WH_GETMESSAGE с обработчиком offset sub_4011C0 в котором есть
jnb short loc_4011E3 с какой-то магией , но если SetWindowsHookExA вернула 0 в еах, то хук не выставлен и обработчик никогда не будет выполнен?



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

Создано: 17 июня 2015 01:24
· Личное сообщение · #10

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




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 17 июня 2015 02:43
· Личное сообщение · #11

motoroller пишет:
Она разве не только дизасм?


не только.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 17 июня 2015 12:57
· Личное сообщение · #12

/*401153*/ PUSH 0
/*401155*/ PUSH DWORD PTR [403109]==hmodule exe ну ну....
/*40115B*/ PUSH 4011C0
/*401160*/ PUSH 3
/*401162*/ CALL SetWindowsHookExA
/*401167*/ OR EAX,EAX
Видать жопорук писал.....

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




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

Создано: 17 июня 2015 13:04 · Поправил: RIscRIpt
· Личное сообщение · #13

Данный crackme не работает на winvista+, т.к. SetWindowsHookExA не отрабатывает, и устанавливает ошибку ERROR_HOOK_NEEDS_HMOD




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 17 июня 2015 13:33 · Поправил: ClockMan
· Личное сообщение · #14

RIscRIpt пишет:
Данный crackme не работает на winvista+, т.к. SetWindowsHookExA не отрабатывает, и устанавливает ошибку ERROR_HOOK_NEEDS_HMOD

для особо одарённых
/*401155*/ PUSH DWORD PTR [403109]==hmodule exe
ставится и ставилась если процедура крючка находится в DLL!!!!!!!!!!!! для хука в нутри своей программы
Code:
  1. SetWindowsHookExA(WH_GETMESSAGE,@Hook,0,GetCurrentThreadId())

исправленный

8c44_17.06.2015_EXELAB.rU.tgz - Rev.exe

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


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

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

Создано: 17 июня 2015 23:12
· Личное сообщение · #15

--> Разбор на буржуйском <--


 eXeL@B —› Вопросы новичков —› Crackme REV или куда ехать дальше?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати