• XSS.stack #1 – первый литературный журнал от юзеров форума

Исследование Registry Booster v1.1

ProTeuS

RAID-массив
Пользователь
Регистрация
22.07.2006
Сообщения
54
Реакции
1
Пациент - программа Registry Booster v1.1. Думаю, все функции понятны по названию и особого представления делать не нужно.
В триал-версии наложено ограни4ение на удаление всего 15 ошибок в реестре. Попытавшись сразу закейгенить\подсмотреть валидный клю4 для сабжа, я обнаружил виртуальные функции, большую захламленность кода в районе проверки клю4ей и решил не тратить много времени попусту и просто пропат4ить нежалаемое ограни4ение (и был прав, ибо в дальнейшем обнаружится, 4то именно тут находится огромнейшая дырища в защите).

При проверке реестра и попытке вы4истить все ошибки выдается окно "Thank You for your interest in Registry Booster!" с надписью об ограни4ениях. Я сразу взялся за Resource Explorer (перед этим исполняемый файл был распакован до Microsoft Visual C++ 7.0 [Debug]) и нашел вот такой броский ресурс с идентификатором 241:

Код:
241	<body bgcolor=WHITE><font face="MS SANS SERIF" size="8pt" color = BLUE><b>Thank You for your interest in Registry Booster!

</b></Font>To Purchase Registry Booster and repair all System Errors, please click on the "Purchase Online" button below. 

  <table border="0" id="table1" cellspacing="0" cellpadding="0"><tr><td height="40"> <b>Total Errors Found:</b>            %d Errors Found.</td></tr><tr><td height="40"><font color =  #C60F0F><b>Trial Version Removal:</b>      This Trial Version will remove up to 15 errors.</font></td></tr><tr><td height="40"><font color =  #C60F0F><b>Remaining Errors:</b>               To remove the remaining errors purchase the full version.</font></td></tr></table></font></body>
Он служит для вывода HTML-нага в окне об превышении найденых ошибок 15

Поищем обращения к ресурсу с заданым идентификатором

Ищем в ольке "Search for -> All commands"
push 0F1 (поскольку 241 = 0F1h)

имеем едиственный вызов

Код:
004220F2  |. E8 E4AF0500    CALL Registry.0047D0DB                  ; \Registry.0047D0DB
004220F7  |. 803D 529B4C00 >CMP BYTE PTR DS:[4C9B52],0
004220FE  |. 8DB7 E8020000  LEA ESI,DWORD PTR DS:[EDI+2E8]
00422104  |. 74 14          JE SHORT Registry.0042211A
00422106  |. 6A 00          PUSH 0
00422108  |. 8BCE           MOV ECX,ESI
0042210A  |. E8 0AB00500    CALL Registry.0047D119
0042210F  |. 6A 00          PUSH 0
00422111  |. 8BCE           MOV ECX,ESI
00422113  |. E8 3DB00500    CALL Registry.0047D155
00422118  |. EB 20          JMP SHORT Registry.0042213A
0042211A  |> 68 F1000000    PUSH 0F1                                ; /Arg1 = 000000F1
0042211F  |. E8 64A6FEFF    CALL Registry.0040C788                  ; \Registry.0040C788
00422124  |. 53             PUSH EBX                                ; /Arg5
00422125  |. 6A 1D          PUSH 1D                                 ; |Arg4 = 0000001D
00422127  |. 6A 6E          PUSH 6E                                 ; |Arg3 = 0000006E
00422129  |. 68 64010000    PUSH 164                                ; |Arg2 = 00000164
0042212E  |. 68 17020000    PUSH 217                                ; |Arg1 = 00000217
00422133  |. 8BCE           MOV ECX,ESI                             ; |
00422135  |. E8 A1AF0500    CALL Registry.0047D0DB                  ; \Registry.0047D0DB
0042213A  |> 53             PUSH EBX                                ; /Arg5
0042213B  |. 6A 0F          PUSH 0F                                 ; |Arg4 = 0000000F
0042213D  |. 6A 2D          PUSH 2D                                 ; |Arg3 = 0000002D
0042213F  |. 6A 49          PUSH 49                                 ; |Arg2 = 00000049
00422141  |. 68 90010000    PUSH 190                                ; |Arg1 = 00000190
00422146  |. 8D8F E4040000  LEA ECX,DWORD PTR DS:[EDI+4E4]          ; |
0042214C  |. C787 4C050000 >MOV DWORD PTR DS:[EDI+54C],0E8A02B      ; |
00422156  |. C787 48050000 >MOV DWORD PTR DS:[EDI+548],0FF0000      ; |
00422160  |. E8 76AF0500    CALL Registry.0047D0DB                  ; \Registry.0047D0DB
00422165  |. 5E             POP ESI
00422166  |. 5D             POP EBP
00422167  |. 5B             POP EBX
00422168  |. 83C4 10        ADD ESP,10
0042216B  \. C3             RETN

В глаза сразу бросается проверка

004220F7 |. 803D 529B4C00 >CMP BYTE PTR DS:[4C9B52],0
004220FE |. 8DB7 E8020000 LEA ESI,DWORD PTR DS:[EDI+2E8]
00422104 |. 74 14 JE SHORT Registry.0042211A

и я4ейка памяти, которая имеет в нашем слу4ае нулевое зна4ение. Опыт подсказывает, 4то это может быть глобальная переменная BOOL is_registered, отве4ающая за статус прохождения\провала регистрации. Проверим, может она где-нибудь еще употребляется.

Find References to -> All address constant

Код:
References in Registry:.text to 004C9B52
Address    Disassembly                               Comment
00418FA3   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00
0041B13C   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00
0041E05F   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00
0041F200   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00
00421801   MOV AL,BYTE PTR DS:[4C9B52]               [004C9B52]=00
00421BE2   MOV AL,BYTE PTR DS:[4C9B52]               [004C9B52]=00
00421EA2   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00
004220F7   CMP BYTE PTR DS:[4C9B52],0                (Initial CPU selection)
0042566B   CMP BYTE PTR DS:[4C9B52],BL
00426C3D   CMP BYTE PTR DS:[4C9B52],BL
0042740A   CMP BYTE PTR DS:[4C9B52],BL
00427469   CMP BYTE PTR DS:[4C9B52],BL
00427704   CMP BYTE PTR DS:[4C9B52],0                DS:[004C9B52]=00

Стало быть, имеем 11 проверок переменной и 2 операции присваивания ей зна4ения. Это только подтверждает нашу теорию.

По природной лени, не желая для подмены зна4ения переменной (в 1) искать место ее инициализации, добавлять код ее перезаписи, я наугад попытался сделать модификацю по адресу .004220F7 в надежде, 4то проверка флага зарегистрированности в других 4астях будет проходить позднее. И я не ошибся =)

Правим:

004220F7 803D 529B4C00 >CMP BYTE PTR DS:[4C9B52],0
004220FE 8DB7 E8020000 LEA ESI,DWORD PTR DS:[EDI+2E8]
00422104 74 14 JE SHORT Registry.0042211A


004220F7 C605 529B4C00 >MOV BYTE PTR DS:[4C9B52],1
004220FE 8DB7 E8020000 LEA ESI,DWORD PTR DS:[EDI+2E8]
00422104 90 NOP
00422105 90 NOP

и имеем полность зарегистрированную версию безо всяких ограни4ений на коли4ество удаляемых ошибок.

gl hl!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх