![]() |
eXeL@B —› Вопросы новичков —› Crackme от ARTeam |
Посл.ответ | Сообщение |
|
Создано: 09 июля 2011 06:19 · Личное сообщение · #1 Столкнулся с проблемой: Чтобы Crackme заработал, нужен файл key.file, размером 19 байт. Проверка содержимого этого файла на корректность производится в процедуре, находящейся по адресу 4010F6 Сама процедура: Code:
где ARG.1 - Строка из файла ARG.2 - ее длина Делал следующее (в обратном порядке) Например, строка в файле "aaaaaaaaaaaaaaaaaaa": Для нее вычисленный хеш равен 0DECC6F7Dh 1. 0DECC6F7Dh ------> xor 7B ------>0DECC6F06h 2. 0DECC6F06h ------> ROL 8 ------> 0CC6F06DEh 3. Из числа 0CC6F06DEh нужно получить число 0CC6F067Dh : 0CC6F06DEh-61h=0CC6F067Dh (т.к. код буквы "a" равен 61h) В крэкми проверяется значение хеша, оно должно быть равным 0AAE23242h Вопрос Возможно ли отреверсить строку, или тут кроме брута ничего не сделаешь? Буду рад помощи, а то окончательно запутался, ибо брутить 19 символов - бред PS патчить НЕЛЬЗЯ ![]() |
|
Создано: 09 июля 2011 08:53 · Поправил: VodoleY · Личное сообщение · #2 0xf0rd как мне кажеца, тут вся соль в ROR EAX,8. Так как это размерность байта, то у тебя по факту в конечном хеше каждый байт это (a xor 7b)+(a xor 7b) ... тебе надо посчитать только сколько раз каждая позиция в конце раз складывалась и ксорилась. и если я не ошибаюсь 7б тоже не просто так, она недолжна давать сумме вылазить за FF ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 09 июля 2011 11:12 · Поправил: 0xf0rd · Личное сообщение · #3 Оказывается, данный крекми был решен еще в далеком 2005 году))) Что бы мы делали без великого Гугла ? ![]() Смысл там такой: Если на вход процедуры подавать строку из 8 нулевых байт, то тогда в EAX будет тоже 0! Следовательно, в файле будут значащими только последние 4 байта)) ![]() |
|
Создано: 09 июля 2011 13:14 · Поправил: r_e · Личное сообщение · #4 Если сообщение больше чем длина хеша берется произвольная последовательность размером sizeof(Msg) - sizeof(Hash) и вычисляется "начальное состояние". Остаток брутится или вычисляется реверсом. При неудаче - генерим новый заголовок и повторяем. Это справедливо для многих хешей. Чем меньше хеш дает коллизий - тем меньше итераций нужно. ----- старый пень ![]() |
|
Создано: 09 июля 2011 13:37 · Личное сообщение · #5 |
![]() |
eXeL@B —› Вопросы новичков —› Crackme от ARTeam |
Эта тема закрыта. Ответы больше не принимаются. |