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

 eXeL@B —› Основной форум —› TreeDBNotes v2.85
Посл.ответ Сообщение

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

Создано: 26 июля 2006 02:22
· Личное сообщение · #1

Доброго времени суток.
У меня возникла проблема, которая не даёт покоя уже 3и сутки....
А именно TreeDBNotes v2.85 которая просит зелёных президентов. Программа представляет собой
текстовый редактор и особой ценности не имеет.....но очень хочется поломать - дело принципа.

Вот линк: www.mytreedb.com/download/treedb/setup_treedbnotes_pro.exe
Вес: 5Мб
Требует: серийник, имя

Пробовал всё подряд...вот кое-какие результаты:
1) Прога написана на Delphi 6/7;
2) BPX на вызовы GetDlgItemText и т.д. ничего дельного не принесли (много лишнего кода);
3) BPX на hmemcpy так же не прошёл (Win98);
4) Серийник проверяется при запуске, извлекается из реестара:
HKEY_CURRENT_USER\Software\SoftArtStudio\TreeDBNotes Pro 2
затем идёт вызов RegQueryValueExA который прописывает RegKey по адресу 017d3d00
5) RegQueryValueExA вызывается ещё 4е раза (RegName, StartDate, RunCounter),
а далее - обращение по 017d3d00 и непонятная каша!

Очень похоже на шифрование и многократное обращение на проверку номера. Если кому интересно, то
посмотрите - подскажите....




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 26 июля 2006 02:49 · Поправил: Z0oMiK
· Личное сообщение · #2

sexxan Скорее всего RSA или MD5... DeDe в руки

Ковыряй тутс

процедурка для кнопочки Register... ( серийник должен быть 30 символов )
008A38F0 55 PUSH EBP

и тутс
0079669C 55 PUSH EBP



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

Создано: 26 июля 2006 21:00
· Личное сообщение · #3

Насчёт батона и его процедуры (008A38F0, 008A38F0 - соотв.):
---------------------------------------------------------------------- -------------------------------------------
008A3967 | CALL TreeDBNo.004839CC ; RegName : Controls.TControl.GetText(TControl):TCaption;
........
008A3972 | CALL TreeDBNo.0040A6CC ; Trunc spaces
........
008A3984 | CALL TreeDBNo.004839CC ; Serial : Controls.TControl.GetText(TControl):TCaption;
........
008A398F | CALL TreeDBNo.0040A6CC ; Trunc spaces
........
008A39A5 | CALL TreeDBNo.0079669C ; PUT IN REGISTRY
........
008A39AE | CALL TreeDBNo.004A1CA8 ; Forms.TCustomForm.Close(TCustomForm);
---------------------------------------------------------------------- -------------------------------------------
А дальше очистка памяти от наших серийников и имён:
---------------------------------------------------------------------- -------------------------------------------
008A39C3 | CALL TreeDBNo.00404E78 ; * Reference to: System.@LStrClr(void;void);
........
008A39CB | CALL TreeDBNo.00404E78 ; * Reference to: System.@LStrClr(void;void);
........
008A39D3 | CALL TreeDBNo.00404E78 ; * Reference to: System.@LStrClr(void;void);
........
008A39DB | CALL TreeDBNo.00404E78 ; * Reference to: System.@LStrClr(void;void);
........
008A39E8 | CALL TreeDBNo.00404E9C ; * Reference to: System.@LStrArrayClr(void;void;Integer);
008A39ED \ RETN
---------------------------------------------------------------------- -------------------------------------------
Интересен вызов CALL TreeDBNo.0079669С ,но дельного там мало:
---------------------------------------------------------------------- -------------------------------------------
00796710 | CALL TreeDBNo.0044D01C ; Registry.TRegistry.OpenKey
........
0079671C | PUSH EAX ; /Arg1
0079671D | MOV CL,1 ; |
0079671F | MOV EDX,TreeDBNo.007967B4 ; |ASCII "BRY|}(R"
00796724 | MOV EAX,ESI ; |
00796726 | CALL TreeDBNo.00796324 ; \DUMMY DECODE
........
00796732 | CALL TreeDBNo.0044D700 ; Registry.TRegistry.WriteString
00796737 | LEA EAX,[LOCAL.4]
0079673A | PUSH EAX ; /Arg1
0079673B | MOV CL,1 ; |
0079673D | MOV EDX,TreeDBNo.007967C4 ; |ASCII "BRY&-LR"
00796742 | MOV EAX,ESI ; |
00796744 | CALL TreeDBNo.00796324 ; \DUMMY DECODE
........
00796751 | CALL TreeDBNo.0044D700 ; Registry.TRegistry.WriteString
00796756 | MOV EAX,EBX
00796758 | CALL TreeDBNo.0044CEA8 ; Registry.TRegistry.CloseKey(TRegistry);
---------------------------------------------------------------------- -------------------------------------------
Два вызова 00796324 - не понятная фейка, им передаются строки "BRY|}(R", "BRY&-LR" в регистре EDX,
на что фу-ции возвращают "RegKey", "RegName" в этом же регистре...
Фишка в том, что этот вызов встречается довольно часто при обращении к реестру...очень странно.
После записи в реестр - фейковый ProgreesBar и TMessageBox - перезагружай прогу!
Так что проверка явно происходит при загрузке.
Пока наткнулся на интересный вызов 008B80F1:
---------------------------------------------------------------------- -------------------------------------------
00795698 | MOV EAX,ESI
0079569A | CALL TreeDBNo.00795FF0 ; GET from Registry NAME, KEY, DATE, COUNTER
0079569F | MOV EAX,ESI
007956A1 | CALL TreeDBNo.00795CAC ; Get something another...
007956A6 | MOV EAX,ESI
007956A8 | CALL TreeDBNo.0079583C ; POINT OF INTEREST
........
007956B3 | CALL TreeDBNo.004043E4 ; System.@AfterConstruction
........
007956C6 \ RETN
---------------------------------------------------------------------- -------------------------------------------
Пробовол копать CALL 0079583C ; POINT OF INTEREST - пока безуспешно...
Жду советов и предложений, если есть у кого...



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

Создано: 27 июля 2006 02:02 · Поправил: sexxan
· Личное сообщение · #4

Хм...
Удалось найти решение, но суть осталась загадкой!
Вообщем, берём версию 2.6 и Crack от tsrh ищем патченые байты
(можно по сравнению или по коду crack'а), вспоминаем где мы это видели....точно в версии 2.85 !!!
Идём в отладчик и пробуем:

Address | Size | Old | New | Comment
0044D01C | 3 | 33 C0 C3 | 55 8B EC | PATCH 1 - REMOVE CHECK OF COUNTS
007585E7 | 6 | 90 E9 | 0F 84 | PATCH 8 - KILL NAG
007957AE | 2 | 00 | 1F | PATCH 2 - "REGISTERED VERSION"
007957F8 | 2 | 00 | 20 | PATCH 3 - REMOVE BRACKETS FROM TITLEBAR
008C0650 | 2 | EB | 75 | PATCH 7 - KILL NAG

По первым впечатлениям всё работает без проблем...но пока серийник не найден,
да и патч остался загадкой.



Ранг: 25.9 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 27 июля 2006 09:11
· Личное сообщение · #5

sexxan пишет:
да и патч остался загадкой

дык проблема-то в чем? Olly в руки и ищи разницу в патченом и непатченом файлах программы, а затем разбирайся, что в непатченом происходит до и после замены команд.



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

Создано: 27 июля 2006 15:20
· Личное сообщение · #6

Проблема - найти серийник и соотв. имя, проверка упрятана среди кучи вызовов и тучи ret'ов.
Патч совсем не касается этой проверки (убирает наг и счётчик запусков всегда = 0).
DeDe конечно помог (благодарствую, Z0oMiK), но всё равно очень напутано...


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


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