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

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

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

Создано: 26 мая 2012 18:27
· Личное сообщение · #1

Программулина по фэншуй http://feng-shui.net.ru/fenshui/FenShui4.0.exe
Сначала защита показалась простой, но что-то посидел дня два, многое увидел, но проблему не решил. Но я не так уж много и знаю.

Что авторы правильно сделали, так это при вводе кода активации, если он неверный ничего не происходит, окон не выдается, так что и докопаться где проверка кода не так просто.

Программа привязывается к жесткому диску. Запрашивается номер виртуального диска стандартной функцией kernel32.GetVolumeInformationW. Мелькает номер лицензии в стеке. Пробовал ставить точки останова на память, чтобы поймать где он читает что-то ничего не вышло.

Ограничения программы состоят в том что годы расчета ограничены. Расчет ведется с 1998 года, а раньше выдается окно с предупреждением. Отследил я это окошко. Конечно его отключение ничего не дает. Это просто переферия. В адресе 0048ACAB просто ставим безусловный переход и окно не выдается.

Дальше, год меняется всегда на 1998. Это лечится занулением процедуры 004A46CA.

Пытался пойти от обратного, нашел процедуру в которой идет вывод информации в графической форме. По адресу 0049В66С. В этой процедуре данные читаются из массива в пами который расположен по адресу 008689F8, наел процедуру в которых и пишет в этот массив - 0043AEF0 и 0043E2D0.

Но пока не получается свести всё воедино.

В процедуре 0043A3A4 мелькают три строки в юникоде типа: ADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDI

и вообще мелькают разные цифры, ну записал, может думал как ключ ввести, нет не подходит. Да и в этой процедуре идет просто проверка года, чтобы он не выходил за рамки ограничений. Но в принципе должна производится проверка программы на зарегистрированность, иначе зачем проверять год?

Пока зашел в тупик, возможно кто-нибудь подскажет, что делать.



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

Создано: 26 мая 2012 18:49 · Поправил: Vovan666
· Личное сообщение · #2

Когда-то давно кейгенил (поищи на руборде), там банальный xor. Ищи константы:
0x12AC96ED
0x34AD56FE
и пляши от них.
ADDINGXXPADDINGPADDING... обычно это мусор который компиляторы добавляют в конец exe



Ранг: 33.8 (посетитель), 38thx
Активность: 0.060
Статус: Участник

Создано: 26 мая 2012 19:10
· Личное сообщение · #3

Можно фишингом.
Поставил бряк GetVolumeInformationA\W - пару раз брякнулся - дошел до адреса 00442C56, если немного потрейсить и увидишь серийник.

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

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

Создано: 26 мая 2012 20:00
· Личное сообщение · #4

А ну да, сразу надо было плясать от GetVolumeInformationA\W, ключик увидел в стеке в явном виде. Спасибо, вопрос решен.



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 26 мая 2012 22:11
· Личное сообщение · #5

Еще можно поставить бряк по этому адресу:
Code:
  1. 0049CDE1  |.  84C0          |TEST AL, AL

в EDX будет лежать ключик.

-----
We do what we want because we can.




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

Создано: 26 мая 2012 22:41
· Личное сообщение · #6

Як дети малые, подсмотр серийника это же банально.
Берем hwid 1111-1111-2222-2222-3333-3333
Переводим в 3 dworda 11111111,22222222,33333333
теперь
11111111xor34AD56FE=25BC47EF
22222222xor12AC96ED=308EB4CF
33333333xor34AD56FE=079E65CD
переводим в ключ
25BC-47EF-308E-B4CF-079E-65CD
Просто, не правда ли?

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

Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 26 мая 2012 23:45
· Личное сообщение · #7

Vovan666, так ты бы в первом посте это отписал они бы не мучались )

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

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

Создано: 02 февраля 2013 02:10
· Личное сообщение · #8

stoan писал: "Дальше, год меняется всегда на 1998. Это лечится занулением процедуры 004A46CA."

У меня вопрос от блондинко: как? (если делать в hex-editor)




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 02 февраля 2013 02:43 · Поправил: plutos
· Личное сообщение · #9

Mallia:
как? (если делать в hex-editor)

В смысле "Как делать зануление?"
Заполняешь где надо NOP (NO OPERATION - opcode: 0X90 on Intel 0x86 CPU). (http://en.wikipedia.org/wiki/NOP).
Если я, конечно, правильно понял вопрос...

-----
Give me a HANDLE and I will move the Earth.




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

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

Ага, вопрос правильно понял Эх, я думала, мне кто-то готовый ответ даст, как мне в этом hex-эдиторе код занулить (на нолики поменять пробовала, оно ломается), я ж блондинка.
Но и на том спасибо! Пойду разбираться!



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 04 февраля 2013 13:28
· Личное сообщение · #11

блондинка c членом?

меняй на 0x90 а не 0x00



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

Создано: 04 февраля 2013 14:30
· Личное сообщение · #12

SWR пишет:
блондинка c членом?


Почему с членом? Правда блондинка

SWR пишет:
меняй на 0x90 а не 0x00


Спасибо!


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


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