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

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

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

Создано: 26 марта 2011 11:05
· Личное сообщение · #1

Приветствую!
Я новичок в крекинге, поэтому прошу вашей помощи, так как у самого ничего не получилось.
Есть программа Desktop Lock Express v2.1.0. Описание: http://www.toplang.com/desktoplockexpress.htm Ссылка на скачивание: http://www.toplang.com/DTLEP.zip. Главное предназначение - блокировка рабочего стола в отсутствие хозяина компьютера.

Именно на версию 2.1.0 нигде нету кряка (кейгена). Программа упакована UPX. С помощью самого UPX получилось распаковать запросто, а с помощью метода, который описывается в статье http://forum.antichat.ru/showthread.php?t=28212 не получилось.

Сложно работать в OllyDbg, так как после запуска локера можно вернуться к отладчику только тогда, когда введем пароль. Но локер после этого полность завершает работу.

Программа работает 21 день (триальный период). Расскажите, как можно взломать данную программу.

Спасибо.




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 28 марта 2011 22:05
· Личное сообщение · #2

Не запускайте его, ищите инициализацию окна отловите регистрацию до запуска

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




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

Создано: 02 апреля 2011 01:45
· Личное сообщение · #3

Напишите поподробнее, как это можно сделать.



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

Создано: 02 апреля 2011 14:00 · Поправил: SReg
· Личное сообщение · #4

BetaTester пишет:
как это можно сделать.


имхо, так правильней сделать
--> KeyGen <--

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

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

Создано: 03 апреля 2011 00:51
· Личное сообщение · #5

2SReg, о спасибо большое, просто супер! Все работает!
Мне бы хотелось узнать, как Вам удалось написать кейген и получить алгоритм генерации ключей. Сложно было?



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

Создано: 03 апреля 2011 01:46 · Поправил: SReg
· Личное сообщение · #6

BetaTester

http://rghost.ru/5050323.view

Code:
  1. var
  2.   i:integer;
  3. implementation
  4.  
  5. function Brute(y:integer):string;
  6. var j:cardinal; m:array[1..6] of cardinal;
  7. begin
  8. repeat
  9. Result:='';
  10. j:=0;
  11.   for i:=1 to 6 do
  12.     begin
  13.       m[i]:=Random(10)+48;
  14.       j:=j+m[i];
  15.       Result:=Result+Chr(m[i]);
  16.     end;
  17. until j and 255 mod y = 0;
  18. end;
  19.  
  20. procedure TForm1.Button1Click(Sender: TObject);
  21. begin
  22. Randomize;
  23. Edit1.Text:=Brute(7)+'-'+Brute(5);
  24. end;
  25. end.


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

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

Создано: 03 апреля 2011 18:33
· Личное сообщение · #7

Понятно... Какое странное условие для выхода из цикла repeat.
Можете написать еще, как именно удалось найти участок кода, который отвечает за генерацию ключа. Это очень важно для меня. Ведь нормально не можно работать с отладчиком: локер все блокирует.



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

Создано: 03 апреля 2011 22:59 · Поправил: SReg
· Личное сообщение · #8

BetaTester пишет:
Какое странное условие для выхода из цикла repeat.

Сам ты странный Ты код вообще смотрел?

Слаживаем последовательно числа, к примеру 31+32+33+34+35+36 (123456) = 135
135 and $ff = 35
35 делим на Y(7) остаток от деления = 4
4 ж неравно 0 ? Значит генерим другие 6 чисел.
а на выходе из функи у нас уже строка(result)
аналогично для y=5

данные берем тут
00403137 . 6A 05 PUSH 5 ; |Arg6 = 00000005 ;y=5
00403139 . 6A 07 PUSH 7 ; |Arg5 = 00000007 ;y=7
0040313B . 6A 06 PUSH 6 ; |Arg4 = 00000006 ;for 1 to 6
0040313D . 6A 02 PUSH 2 ; |Arg3 = 00000002 ;цикл 2 раза

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

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

Создано: 03 апреля 2011 23:49
· Личное сообщение · #9

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

А как пришли к самому месту генерации ключа?



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

Создано: 04 апреля 2011 00:19
· Личное сообщение · #10

Влезу в ваш топик, извиняйте, на чем написан кейген который выше и чем компилировался.

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


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

Создано: 04 апреля 2011 01:12
· Личное сообщение · #11

Amidosha на Delphi написан им же и компилировался А зажато все UPX

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

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

Создано: 04 апреля 2011 01:50
· Личное сообщение · #12

BetaTester пишет:
что здесь может быть вечный цикл

хе-хе. Получить такое число доля секунды цикл выполняется в основном 2-3 раза. Теоретически много кое чего возможно, у нас не 100500 символов в ключе. Нужно исходить из поставленной задачи.
BetaTester пишет:
А как пришли к самому месту генерации ключа?

Трассировкой
BetaTester пишет:
Ведь нормально не можно работать с отладчиком: локер все блокирует.

Значит пропатч его чтоб не блокировал, и исследуй на здоровье

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

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

Создано: 04 апреля 2011 18:11
· Личное сообщение · #13

SReg пишет:
Значит пропатч его чтоб не блокировал, и исследуй на здоровье

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 08 апреля 2011 09:30
· Личное сообщение · #14

BetaTester
Если данная задача тебе не по силам - возьмись за более простой пример с туториалом, отрабатывай навыки на нём. Используй IDA, чтобы увидеть код без отладчика.

-----
EnJoy!


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


Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 08 апреля 2011 22:50
· Личное сообщение · #15

поищи rdtsc (это каманда) и GetTickCount(функа API)

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

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

Создано: 09 апреля 2011 13:33
· Личное сообщение · #16

BetaTester пишет:
У меня раньше была идея подменять значение интервала для всех вызовов функции SetTimer на большее,

Это неверная идея. Какой таймер ? На 21 день? Прога просто считывает системную дату и сравнивает.
BetaTester пишет:
приостановить выполнение некоторых потоков, возможно тогда перестанет блокировать систему

Это стрельба вслепую. Либо прочти теорию, как можно блокировать и ищи соответствующие функции, либо тупо иди в отладчике по шагам до того места, как начнет блокировать. Это тоже почти вслепую и очень муторно, но что поделаешь. Пока знаний нет - другого пути нет. Или тренироватся на кошечках.
=======================================
Попробую подсказать. У локера тоже есть окно, которое и "загораживает" рабочий стол. Вот и ищи его : функции создания и т.п. Только придется снять сначала блокировки, если они до создания окна устанавливаются. Тут надо исследовать.
Я скачал локер и запустил его под Олли. Прекрасно останавливается на начале проги и можно идти по шагам. Далее все в твоих руках. Можно и Олли как дизассемблер использовать, но Ида действительно лучше. Но вслепую и там и там искать бесполезно. А научить азам в форуме невозможно - придется самому статьи читать.

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

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

Создано: 11 апреля 2011 01:15
· Личное сообщение · #17

tundra37, спасибо за подсказки, все понял.
Всем большое спасибо за помощь. Тему закрываю.


 eXeL@B —› Вопросы новичков —› Исследование локера
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати