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

 eXeL@B —› Вопросы новичков —› Испорченный алгоритм хеширования?
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 31 января 2015 23:47
· Личное сообщение · #1

Добрый вечер!
Ковыряю небольшую программульку, в которой защита основана на проверке контрольной суммы исполняемого файла. Алгоритм хеширования SHA-512, но у меня почему-то не сходятся хеши генерируемые программой и генератором онлайн. Вообще в программе также используется SHA-1\256\384, но лишь 1\256 отрабатываю правильно. Возможна ли порча алгоритма или же я что-то неправильно делаю?
Начало хеширования:
Code:
  1. 0041B2F0  /$  55            PUSH EBP

Хеширование:
Code:
  1. 0041B3AD  |.  E8 42FBFFFF   CALL FKEX_4_0.0041AEF4


ce87_31.01.2015_EXELAB.rU.tgz - proga.zip



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

Создано: 03 февраля 2015 21:13
· Личное сообщение · #2

zds пишет:
в итоге, быстрее оказалось перенести код asm вставками

Ну это как самый крайний вариант.

Djeck пишет:
Хоть бы погуглил, что это такое

Да встречал я раньше этот HiAsm, раз конструктор, то пусть будет конструктор. В папке "code" лежит юнит MD5.pas, открываем, портим.

У меня теперь другая проблема, начал сравнивать хеширование проги с модулем SHA из DCPCrypt, при компрессии OllyDbg выдает разные результаты выполняя одну и ту же команду

Code:
  1. ;DCPCrypt:
  2. EAX=5C12E3EA
  3. EDX=4D51AB92
  4.  
  5. SHRD EAX,EDX,1
  6. ;Результат: EAX=2E0971F5
  7. ==================
  8. ;Прога:
  9. EAX=5C12E3EA
  10. EDX=4D51AB92
  11. ECX=00000001
  12.  
  13. SHRD EAX,EDX,CL
  14. ;Результат: EAX=2E097175


Соответственно за 64 раунда получается много несовподений.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 03 февраля 2015 21:43
· Личное сообщение · #3

dex015 пишет:
;Прога:
EAX=5C12E3EA
EDX=4D51AB92
ECX=00000001

SHRD EAX,EDX,CL
;Результат: EAX=2E097175


Хм, как так ?
Прямо в ольке в МА вписал:
Code:
  1. mov EAX,5C12E3EA
  2. mov EDX,4D51AB92
  3. mov ECX,00000001
  4. SHRD EAX,EDX,CL

eax = 2E0971F5

По-моему ошибка не здесь ?!

-----
ds




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

Создано: 03 февраля 2015 22:10
· Личное сообщение · #4

Вот скрины: --> Link <--




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 февраля 2015 22:39
· Личное сообщение · #5

осталось узнать о вашем чудо железе/оси/эмуляторах/антивирусах



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

Создано: 03 февраля 2015 22:49
· Личное сообщение · #6

Простенький нетбук, одно ядро, Intel Atom N450 х86, озу 1Гб, ось Windows7 Ultimate, админские права, эмуляторов нет, антивирь Касперский, временно отключён, так как лень сбрасывать триал.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 февраля 2015 22:59
· Личное сообщение · #7

чудес не бывает
мне лень, но думаю кто то сможет набросать вам мини прожку в которой выполняется SHRD
и выкидывать результат на экран

что бы уж точно знать глючит проц или где то что то висит и перехватывает

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

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

Создано: 03 февраля 2015 23:14
· Личное сообщение · #8

DimitarSerg пишет:
Прямо в ольке в МА вписал:

Так же вписал, результат правильный 2E0971F5




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 февраля 2015 23:23 · Поправил: reversecode
· Личное сообщение · #9

пробуйте под идой запустить подебажить
будут ли там такие странные результаты SHRD



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

Создано: 03 февраля 2015 23:47
· Личное сообщение · #10

В Ida как и в Olly, неправильный результат: 2E097175.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 04 февраля 2015 01:21
· Личное сообщение · #11

Ну пздц

dex015
Внимательно посмотри на свой скрин, в eax 5C12E2EA а не 5C12E3EA

reversecode пишет:
чудес не бывает

+1

Добавлено спустя 1 минуту
p.s. В реверсе внимательность - одно из важнейших качеств.

-----
ds


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

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

Создано: 04 февраля 2015 01:41
· Личное сообщение · #12

Да, это мой косяк.



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

Создано: 05 февраля 2015 00:48
· Личное сообщение · #13

Нашёл в алго 2 косяка, вместо SAR, должен быть SHR, тогда SHA-384 хеширует правильно.
Code:
  1. 0041A77C  |.  C1FA 06       SAR EDX,6
  2. 0041A724      C1FA 07       SAR EDX,7

Только не пойму, зачем этот велосипед с SAR в Делфи.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 05 февраля 2015 00:50
· Личное сообщение · #14

если инлайн вставка - ошибка делфи программера по адаптации алго
если нет, значит компилер поумничал



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

Создано: 05 февраля 2015 01:26
· Личное сообщение · #15

Скорее второе, мне изначально, всё это показалось странным, если автор портит алго, то зачем он в порченном хеше заменяет нули девятками. Это про оверлей.



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

Создано: 18 февраля 2015 21:07
· Личное сообщение · #16

Разобрал всю защиту проги, остался маленький, но очень весомый нюанс. Прога генерит случайное девятизначное число, а потом преобразует его в какое-то дикое число с точкой, например:
Code:
  1. ASCII "923312869"
  2. ASCII "11812966754.1176"

Каким-то образом сервер преобразует это дикое число в девятизнак и присылает его хеш. Пытался отправлять серверу более приземлённые числа, но никак не могу понять, что за математика:
Code:
  1. отправляю 2200 получаю хеш 53c53c5d2b630c0d912264bb9edf8cf6f0afa260 = 689
  2. отправляю 2210 получаю хеш 8ff059157542d2c31f0e43fc7f2325343e603875 = 688
  3. отправляю 2220 получаю хеш 3da7e2c2144502d7115bee98a0dfe95030345b43 = 691
  4. отправляю 2230 получаю хеш 3da7e2c2144502d7115bee98a0dfe95030345b43 = 691
  5. отправляю 2240 получаю хеш d9fce17200317431b1b43b27508224cf0294759a = 690
  6. отправляю 2250 получаю хеш 9170981d59d0f8d3f003ef0f289394ded6a00696 = 701
  7. отправляю 2260 получаю хеш d8e4bbea3af2e4861ad5a445aaec573e02f9aca2 = 700
  8. отправляю 2270 получаю хеш d8e4bbea3af2e4861ad5a445aaec573e02f9aca2 = 700
  9. отправляю 2280 получаю хеш 8fc1bb57c95fe04d4a8acab34ca0576ac19fdc01 = 703
  10. отправляю 2290 получаю хеш a085216616587a553a52ec5faf1e61bfacf2bbfa = 702
  11. отправляю 2300 получаю хеш ff5ae4a7485c5c734d9e9cd8a8d875bf5ebddf60 = 697

Подскажите кто чем может.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 18 февраля 2015 21:18
· Личное сообщение · #17

забей




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 18 февраля 2015 23:21
· Личное сообщение · #18

dex015 пишет:
это дикое число в девятизнак и присылает его хеш

Чего-чего ?

sha1 ("689") = 53c53c5d2b630c0d912264bb9edf8cf6f0afa260

-----
ds




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

Создано: 18 февраля 2015 23:31
· Личное сообщение · #19

DimitarSerg пишет:

sha1 ("689") = 53c53c5d2b630c0d912264bb9edf8cf6f0afa260

Всё верно, но вот как из 2200 получить 689, в этом и вопрос.

Добавлено спустя 5 минут
Правлю в проге случайное число на 689, после каких-то преобразований на сервер отправляется 2200.58823529412, при ответе сервера хеш 53c53c5d2b630c0d912264bb9edf8cf6f0afa260, вывод, сервер откинул то, что после точки, вычислил как-то из 2200 число 689 и сгенерировал хеш.



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

Создано: 20 февраля 2015 01:57
· Личное сообщение · #20

Разобрался, какая-то оголтелая математика:
Code:
  1. 689   xor 5   = 692
  2. 692   -   567 = 125
  3. 125   +   47  = 172
  4. 172   *   435 = 74820
  5. 74820 /   34  = 2200,588235294118

5, 567, 47, 435, 34 - константы.



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

Создано: 20 февраля 2015 07:11 · Поправил: unknownproject
· Личное сообщение · #21

dex015 пишет:
Разобрался, какая-то оголтелая математика:

Алго как алго.Без знаний математики, даже элементарной, далеко не уйдешь.В какой-то мере она используется во всех алгоритмах, связанных с ПО.

-----
TEST YOUR MIGHT



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


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