ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Исследование защиты TeleDesktop.
  #1  
Старый 25.07.2007, 18:51
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию Исследование защиты TeleDesktop.

[Intro типа]
Попалась мне прога TeleDesktop и решила я энто творение кодерского искусства поизучать. На полноценную статью это не тянет, но может быть, кому-нибудь будет интересно. Ну а если не будет - на то товарисчи модераторы имеются.

[Приступим]
Софтина имеет испытательный срок в 30 дней, а по истечению сего периода требуется приобрести лицензию на использование.
Захожу в программу, ввожу ключ и получаю злобное сообщение "Invalid license key".

Код:
0040E8DE   .  83BD DCE0FFFF 14         CMP DWORD PTR SS:[EBP-1F24],14
0040E8E5   .  74 34                    JE SHORT ptdskhos.0040E91B
0040E8E7   .  6A 00                    PUSH 0
0040E8E9   .  6A 00                    PUSH 0
0040E8EB   .  68 D42A4400              PUSH ptdskhos.00442AD4                               ;  ASCII "Invalid license key"
0040E8F0   .  E8 3DC10200              CALL <JMP.&MFC42.#1200> ; месаг
0040E8F5   .  C645 FC 00               MOV BYTE PTR SS:[EBP-4],0
Здесь,очевидно, сравнивается количество введенных символов с
14h.Если не равно - выводится злобный месаг. Отлично. Теперь по крайней мере известна длина ключа - 20 символов.
Ввожу "12345678901234567890" и получаю вердикт от программы "Invalid license". Что ж. Теперь осталось узнать когда лицензия невалидна.

Код:
0041184D  CMP DWORD PTR SS:[EBP-2C2C],0
00411854  JNZ SHORT ptdskhos.004118A8
00411856  PUSH 0
00411858  PUSH 0
0041185A  PUSH ptdskhos.00442A98                            ;  ASCII "Invalid license."
0041185F  CALL <JMP.&MFC42.#1200>
Оля дала неутешительный ответ - на этот код ссылаются 8 прыжков(((( Это означает 8 проверок, а 8 проверок это плохо. Немного покопавшись в коде мне стало ясно, что дворд по адресу [EBP-2C2C] - это флаг регистрации: если FALSE - регистрация неуспешна, TRUE -успешна. FALSE к этой переменной присваивается 8 раз, а TRUE только один

Код:
00411843   .  C785 D4D3FFFF 01000000   MOV DWORD PTR SS:[EBP-2C2C],1
Но до TRUE нужно еще дореверсить, а процедура оооооочень большая с использованием какого-то аццкого криптоалгоритма.
Естественно первая проверка была элементарна - в ней проверялся формат номера

Код:
00410E44   .  8B8D D8D3FFFF            MOV ECX,DWORD PTR SS:[EBP-2C28] ; тут адрес лицензионного ключа
00410E4A   .  0FBE51 04                MOVSX EDX,BYTE PTR DS:[ECX+4] ; пятый символ должен быть "-"  
00410E4E   .  83FA 2D                  CMP EDX,2D
00410E51   .  75 1E                    JNZ SHORT ptdskhos.00410E71
00410E53   .  8B85 D8D3FFFF            MOV EAX,DWORD PTR SS:[EBP-2C28] ; тут адрес лицензионного ключа
00410E59   .  0FBE48 09                MOVSX ECX,BYTE PTR DS:[EAX+9]  ;десятый символ должен быть "-"  
00410E5D   .  83F9 2D                  CMP ECX,2D
00410E60   .  75 0F                    JNZ SHORT ptdskhos.00410E71
00410E62   .  8B95 D8D3FFFF            MOV EDX,DWORD PTR SS:[EBP-2C28]; ; тут адрес лицензионного ключа
00410E68   .  0FBE42 0E                MOVSX EAX,BYTE PTR DS:[EDX+E] ;пятнадцатый символ должен быть "-"  
00410E6C   .  83F8 2D                  CMP EAX,2D
00410E6F   .  74 0F                    JE SHORT ptdskhos.00410E80
00410E71   >  C785 D4D3FFFF 00000000   MOV DWORD PTR SS:[EBP-2C2C],0 ; если неправильный формат- присваиваем FALSE и в плохую процедуру
00410E7B   .  E9 CD090000              JMP ptdskhos.0041184D
Из этого следует, что формат номера - xxxx-xxxx-xxxx-xxxxx. Гут. Но вторая проверка - аццкое битоизвращение. Про остальные вообще не говорю. Тогда у меня возникла идея заменить перед самым переходов в плохую процедуру

Код:
0041184D  CMP DWORD PTR SS:[EBP-2C2C],0
00411854  JNZ SHORT ptdskhos.004118A8
на
Код:
0041184D   > \FF85 D4D3FFFF            INC DWORD PTR SS:[EBP-2C2C]
00411853   .  90                       NOP
00411854   . /75 52                    JNZ SHORT ptdskhos.004118A8
Смысл этой манипуляции в следующем. Переменная-флаг будет равна нулю, так как вводимый код неверен, поэтому инкрементом мы сделаем ее ненулевой.Когда переменная становится TRUE, jnz на это реагирует и срабатывает и ... 8 проверок обошли. Но программа так просто сдаваццо не хотела и выдала мне сообщение "This license can be installed on no more than 500 machine(s). Do you want to continue?". Не хочу на 500 машин лицензию. Малова-то будет)
Ставим бряк на конец MessageBox-> вываливаемся в mfc42.dll, а из нее в код программы. Прям перед вызовом функции #1200 из mfc42.dll, выводящей злобный месаг стоит прыжок, его и пропатчим.

Код:
004121F9  MOV DWORD PTR SS:[EBP-408],3E8
00412203  JGE ptdskhos.004122E7
00412209  MOV ECX,0B
0041220E  MOV ESI,ptdskhos.00442A68                            ;  ASCII "This license can be installed on no more than "
00412213  LEA EDI,DWORD PTR SS:[EBP-1324]
00412219  REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
0041221B  MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]              ; а дальше формирование злобной строки
0041221D  MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0041221E  MOV ECX,0EE
00412223  XOR EAX,EAX
00412225  LEA EDI,DWORD PTR SS:[EBP-12F5]
0041222B  REP STOS DWORD PTR ES:[EDI]
0041222D  STOS BYTE PTR ES:[EDI]
0041222E  PUSH 0A                                              ; /radix = A (10.)
00412230  LEA EDI,DWORD PTR SS:[EBP-1324]                      ; |
00412236  OR ECX,FFFFFFFF                                      ; |
00412239  XOR EAX,EAX                                          ; |
0041223B  REPNE SCAS BYTE PTR ES:[EDI]                         ; |
0041223D  NOT ECX                                              ; |
0041223F  ADD ECX,-1                                           ; |
00412242  LEA EAX,DWORD PTR SS:[EBP+ECX-1324]                  ; |
00412249  PUSH EAX                                             ; |string
0041224A  MOV ECX,DWORD PTR SS:[EBP-408]                       ; |
00412250  PUSH ECX                                             ; |value
00412251  CALL DWORD PTR DS:[<&MSVCRT._itoa>]                  ; \_itoa
00412257  ADD ESP,0C
0041225A  MOV EDI,ptdskhos.00442A40                            ;  ASCII " machine(s). Do you want to continue?"
0041225F  LEA EDX,DWORD PTR SS:[EBP-1324]
00412265  OR ECX,FFFFFFFF
00412268  XOR EAX,EAX
0041226A  REPNE SCAS BYTE PTR ES:[EDI]
0041226C  NOT ECX
0041226E  SUB EDI,ECX
00412270  MOV ESI,EDI
00412272  MOV EBX,ECX
00412274  MOV EDI,EDX
00412276  OR ECX,FFFFFFFF
00412279  XOR EAX,EAX
0041227B  REPNE SCAS BYTE PTR ES:[EDI]
0041227D  ADD EDI,-1
00412280  MOV ECX,EBX
00412282  SHR ECX,2
00412285  REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
00412287  MOV ECX,EBX
00412289  AND ECX,3
0041228C  REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0041228E  PUSH 0
00412290  PUSH 4
00412292  LEA EAX,DWORD PTR SS:[EBP-1324]
00412298  PUSH EAX
00412299  CALL <JMP.&MFC42.#1200> ; злобный месаг
Смотрим и меняем

Код:
004121F9   MOV DWORD PTR SS:[EBP-408],3E8 
00412203   JGE ptdskhos.004122E7
на

Код:
004121F9   > \C785 F8FBFFFF E8030000   MOV DWORD PTR SS:[EBP-408],3E8 
00412203   .  E9 DF000000              JMP ptdskhos.004122E7
И успешно проходим еще одну проверку. После этого патча удача мне опять же не улыбнулась( Прога попросила ввести старый код. Меня не так поняли) Снова ставлю брекпоинт на MessageBox (можно в принципе и на функцию #1200 из mfc42.dll).. Старый код программа просит ввести из трех мест. Все эти три проверки обходит один прыжок

Код:
004122E7  CMP DWORD PTR SS:[EBP-920],0
004122EE  JE ptdskhos.00414A7C
Меняем на jmp. Запускаем....... Лицензионный ключ принят и успешно установлен)))

Done

Последний раз редактировалось 0x0c0de; 26.07.2007 в 11:39..
 
Ответить с цитированием

  #2  
Старый 25.07.2007, 19:16
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

супер. в следующий раз можно снять видео...

ЗЫ что за джамп Jge?=)
 
Ответить с цитированием

  #3  
Старый 25.07.2007, 19:19
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

jge==прыжок если больше или равно
 
Ответить с цитированием

  #4  
Старый 25.07.2007, 19:47
Аватар для Hellsp@wn
Hellsp@wn
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме:
2715445

Репутация: 588
По умолчанию

хех не всё раскрыто =) как ты вышла на этот код:

Код:
004121F9   MOV DWORD PTR SS:[EBP-408],3E8 
00412203   JGE ptdskhos.004122E7
и почему это именно то что нам нужно? Просто не совсем понятно для какого уровня статья, если для новичков, то надо всё писать =)
 
Ответить с цитированием

  #5  
Старый 25.07.2007, 19:52
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

Бес праблем=) Отредактировала.

Но аццкое крипто неасилила, жаль(

Последний раз редактировалось 0x0c0de; 26.07.2007 в 07:47..
 
Ответить с цитированием

  #6  
Старый 25.07.2007, 20:31
Аватар для GoreMaster
GoreMaster
Участник форума
Регистрация: 28.05.2007
Сообщений: 125
Провел на форуме:
638513

Репутация: 103
По умолчанию

Лучше бы написала статью по закейгениванию этой проги. =)
В остальном норм для новичков.
P.s.: где-то я видел это аццкое крипто О_о
P.P.S.: дай линк на софт =)

Последний раз редактировалось GoreMaster; 25.07.2007 в 20:34..
 
Ответить с цитированием

  #7  
Старый 25.07.2007, 21:46
Аватар для 0x0c0de
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

GoreMaster, крипто, что в фрагменте-это не то крипто. Завтра, если буду на форуме, дам линк или залью на обменник.
PS Там хитрая манипуляция с регистрами. В частности, второй прыжок на плохой месаг - именно такая фигня(
 
Ответить с цитированием

  #8  
Старый 26.07.2007, 06:03
Аватар для taha
taha
Постоянный
Регистрация: 20.08.2006
Сообщений: 327
Провел на форуме:
2472378

Репутация: 1077
По умолчанию

Так... мда... как ни крути, а тема является статьёй (хоть и не очень большой)
переношу в соответсвующий раздел
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исследование защиты Acunetix Web Scanner 4 build 20060809 Go0o$E Авторские статьи 14 11.10.2006 23:15
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Ловушка для взломщика k00p3r Чужие Статьи 0 08.06.2005 16:48
Меры защиты информационной безопасности foreva Чужие Статьи 0 06.02.2005 19:33



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ