Сейчас на форуме: _MBK_, Adler, asfa, bartolomeo (+9 невидимых)

 eXeL@B —› Вопросы новичков —› Помощь в алгоритме
Посл.ответ Сообщение

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

Создано: 01 октября 2012 11:19
· Личное сообщение · #1

Доброго времени, ковыряю алго одной программки и застрял на таком моменте:
Серийник представляет собой 8 разрядов по 8 цифер - я использовал 1, 2, 3 и т.д.

1. 88888888 xor 22222222 and 168970AE = 28820AA
2. 88888888 xor 028820AA = 8A00A822
3. 8A00A822 xor EE1653E5 = 6416FBC7
4. cmp 6416FBC7 должно = 65897525

Xor 65897525 и EE1653E5 - дает 8B9F26C0
Не могу догнать как получить нужные значения 1 и 2.

EE1653E5 - расчитывается по другим разрядам, а 168970AE - const.

Заранее спасибо за помощь.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 01 октября 2012 12:08 · Поправил: Veliant
· Личное сообщение · #2

65897525 xor EE1653E5 = 8B9F26C0
(aaaaaaaa xor bbbbbbbb and 168970AE) xor aaaaaaaa = 8B9F26C0
Решается быстро перебором

Только у тебя где-то еще косяк с EE1653E5 потому что нет таких a и b, которые подходили бы по условию

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

Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 01 октября 2012 12:48 · Поправил: Vovan666
· Личное сообщение · #3

Могу ошибаться, но (8B9F26C0 xor 88888888) должен получаться меньше 168970AE
т.е. тебе нужно "брутить" остальные части кода чтоб EE1653E5 xor 65897525 xor 88888888 был меньше 168970AE

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

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

Создано: 01 октября 2012 15:35 · Поправил: SergeyIvan
· Личное сообщение · #4

Если Вы не против выложу полностью мои выкладки:

88888888 xor 22222222 and 168970AE = 28820AA *
88888888 xor 028820AA = 8A00A822 *

77777777 xor 44444444 and 6F8E9AC4 = 23021200
44444444 xor 23021200 = 67465644
55555555 xor 33333333 = 66666666
67465644 xor 895005A1 = EE1653E5 ; EE1653E5 and 688E9C4A = 68061040
33333333 xor 60060442 = 53353771
66666666 xor 11111111 and 78C7EB20 = 70476320

11111111 xor 70476320 = 61567231
22222222 xor 028820AA = 20AA0288
55555555 xor 60060442 = 35535117
77777777 xor 23021200 = 54756577

*8B9F26C0
8A00A822 xor EE1653E5 = 6416FBC7 *

66666666 xor 70476320 = 16210546
61567231 xor 98E5FB21 = F9B38910
53353771 xor 6D2125C8 = 3E1412B9

* cmp 6416FBC7 - 65897525

3E1412B9 xor 16210546 = 283517FF
cmp 283517FF - 1259A87
EE1653E5 xor 54756577 = BA633692
cmp BA633692 - 15A8E560
(напомню - серийник 8 разрядов по 8 цифир)
Чтобы добиться результата требуется пройти все cmp, но я видимо зря решил разбираться с каждым по одиночке...

И еще вопрос - как реализовать быстрый перебор - писать свое или имеются инструменты ?

UDP
Жертва - cda2 mp3 converter - вроде патчи имеются, но хотелось бы разобраться самому
Ссылка (размер 3-4Мб) - http://rghost.ru/40677833

00421275 - size=64
00402E52 - прыг на правильный зарег - если ничего не перепутал (


В общем мысли как победить данный алго появились - требуется задать формулу учитывающие все условия, так как я этим занимаюсь только на работе , то отложу до завтра. Спасибо господа реверсеры за наводку.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 01 октября 2012 15:47 · Поправил: Veliant
· Личное сообщение · #5

наверное будет проще выложить жертву

Итого господа все свелось к следующей формуле
N = random

d8 = N xor 0x168970AE
d2 = not d8

d7 = N xor 0x8357EA40
d4 = not d7


p.S. от ниже сказанного DimitarSerg'ом пришли к выводу что считать придется только v4, остальное random




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

Создано: 02 октября 2012 00:53 · Поправил: DimitarSerg
· Личное сообщение · #6

SergeyIvan
Посоветовал бы заюзать хексрейс и получить более-менее понятные сведения, а если немного подумать и всё это преобразовать хотя бы минимально, то рег-схема выглядит таким образом:
Code:
  1.   v1 := (d[8] xor d[2]) and $168970AE;
  2.   v2 := d[8] xor v1;
  3.   v3 := (d[7] xor d[4]) and $6F8E9AC4;
  4.   v4 := d[4] xor v3 xor $895005A1;
  5.   v5 := d[2] xor v1;
  6.   v6 := d[5] xor ((d[5] xor d[3]) and $688E9C4A);
  7.   v7 := d[7] xor v3;
  8.   v8 := d[6] xor (d[6] xor d[1]) and $78C7EB20;
  9.   v9 := d[1] xor (d[6] xor d[1]) and $78C7EB20 xor $98E5FB21;
  10.   v10 := (d[3] xor (d[5] xor d[3]) and $688E9C4A) xor $6D2125C8;
  11.  
  12.   if ((v2 xor v4) = $65897525) then
  13.   if ((v10 xor v8) = $1259A87) then
  14.   if ((v4 xor v7) = $15A8E560) then
  15.   if (NOT(v4 * v10 + v4 * (v9 div $D) + v10 * (v9 div $11)) = v5) then
  16.   if (NOT(v10 + v9 - v4 * v9 div 3) = v6) then OK;


Еб**** ****

SReg +1
Хоть усну спокойно

-----
ds




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 02 октября 2012 01:22
· Личное сообщение · #7

авторы софта - пиндосы есче те
солюшн
http://solutionmes.wikidot.com/cmde-mopy-simple-math

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

Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 02 октября 2012 01:59
· Личное сообщение · #8

SReg
Похоже не авторы. а мопи, особенно порадовал предпоследний коммент.
http://crackmes.de/users/mopy/simple_math_keygenme_p/



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 02 октября 2012 02:51
· Личное сообщение · #9

вполне даже возможно.
я с наскока не нагуглил версию софтины, которую запостили где нить раньше, чем "05. Jun, 2012"
так же не в теме, сгенерила бы студия довольно таки чистый код ... инструкции типа 'mul ebp'



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 02 октября 2012 04:11
· Личное сообщение · #10

SReg

Я этот алгоритм встречал раза 3-4 и не только в этой софтине.


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


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