![]() |
eXeL@B —› Основной форум —› Взлом Resman 5.0 pro от jack7277 |
Посл.ответ | Сообщение |
|
Создано: 24 декабря 2005 09:46 · Личное сообщение · #1 Взлом Resman 5.0 pro от jack7277 Можно выложить как статью ![]() Скажу сразу, мне до этого ресмана нет никакого дела, до разборок нет никакого дела, меня попросили просто. Инструменты: Apispy32 OllyDbg w32dasm Помощь получена с форума www.exelab.ru, но оттуда я взял только адреса функций открытия файла и соединения с телефоном. Просто так эти адреса не получить, так как они берутся из памяти и при неправильном ключе там нули. Листинг этого куска приведу ниже. Начал копать я от генерации ключа, но быстро в этом закопался. Уж больно там куча привязок. Программа генерирует код для посылки автору исходя из конфигурации железа и виндов, затем ответный ключ вводится в поле регистрация. При успешной регистрации вылезает MessageBoxA с надписью 0046A173 MessageBoxA "Спасибо за регистрацию:\r\n" Генерация пароля на основе следующих данных: HKLM \ SOFTWARE\Microsoft\Windows NT\CurrentVersion ключи RegisteredOwner, RegisteredOrganization, BuildLab, ProductId, SourcePath, InstallDate HKLM \ SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName ключ ComputerName HKLM \ HARDWARE\DESCRIPTION\System\CentralProcessor\0 ключи: ~MHz, ProcessorNameString + количество ОЗУ + разрешение экрана + Серийный номер диска С: + 2 константы ( "5.0" - это версия и "29/10/2005" - это дата официального релиза проги) + еще одна переменная, генерируемая от пути проги у меня на основе инфы от компа генерировалась такая строка: AMD Athlon XP(t|AMD Athlon XP(t|2099|512|JACK7277|jack|jack||Windows XP v5.1 b2600 |1152x864|2600.xpsp_sp2_rtm.040803-2158|55683-640-2239822-23982|C :\|436B6DA2|436B765B|5.0|29/10/2005|958464 После успешной регистрации ключ пишется в файл resman.ini секция [Global] значение Key=1234567890 По пути нахождения ключа я не пошел, там много всего... Пошел по пути наименьшего сопротивления, метод битхака, некрасиво, зато быстро можно добиться нужного варианта, устраивающего всех. Для начала файл упакован UPX. Распаковал автоматом. При запуске программы все меню серые, доступно только введение ключа. Поначалу это вообще было похоже на всякие генераторы номеров для билайна или для вебмани, думал очередная пустышка. Начал копать по активации меня через EnableMenuItem, но у меня ничего конечно не вышло, потом подсказали что надо смотреть SetMenuItemInfoA Перед вызовом этой функции идет 3 push'a первый который в виде push 0 или push 1 0 - меню серое, 1 - меню активно. 0040AB2D PUSH 0 0040AB2F MOV EAX, DWORD PTR SS:[EBP+1C] 0040AB32 PUSH EAX 0040AB33 PUSH ESI 0040AB34 CALL <JMP.&user32.SetMenuItemInfoA> После активации меню ни один пукнт неактивен, там стоит проверка на каждый пункт. Встал вопрос как отследить нажатие на каждый пункт меню. Программа написана на делфи с использованием KOL. DeDe ничем не помог. Потыкал в пункты меню, при нажатии Файл - Сохранить разницу в S3 выпал messagebox с надписью что мол сохранять изменения можно только после изменения прошивки. Прицепился к messagebox, протрассировал по коды все выходы и смотрел что выше. и наткнулся на такое место: 0040A8C2 MOV ECX, DWORD PTR SS:[ESP+4] 0040A8C6 MOV EDX, EBP 0040A8C8 MOV EAX, DWORD PTR DS:[ESI+3B] 0040A8CB CALL DWORD PTR DS:[ESI+37] Волшебное место, так как этот CALL - это как раз раздатчик адресов. Нажимаешь на каждый пункт меню и смотришь какой адрес является обработчиком каждого пункта меню. Почти все проверки там однотипные, сразу же на входе стоит проверка одного бита, и если он равен нулю, то выход. Я эти проверки просто nop'ами забил. Единственная проблема оказалась с такими пунктами как: 1. Открыть файл прошивки 2. Соединиться с телефоном и настройки соединения ( у этих двух оказался один адрес) при нажатии на эти пункты меню, происходит переход на такую часть: (маркер1) 00479C24 MOV EAX, DWORD PTR DS:[4B56D8] 00479C29 CMP EAX, 1.00400000 ; ASCII "MZP" 00479C2E JBE SHORT 1.00479C49 00479C30 CMP EAX, 500000 00479C35 JNB SHORT 1.00479C49 00479C37 MOV EAX, DWORD PTR DS:[4B56D8] 00479C3C CMP WORD PTR DS:[EAX], 0C033 00479C41 JNZ SHORT 1.00479C49 00479C43 CALL DWORD PTR DS:[4B56D8] 00479C49 RET Берем адрес функции, он должен лежать в области между 400000...500000 и первые байты функции должны быть 33С0, то есть XOR EAX, EAX И как получить я не знал, пока форум не перечитал, а там был пост от Balthasar_magus 10) 004AF904 CALL resman.0046A0CC 004AF909 CMP DWORD PTR SS:[EBP-4],3 попадем сюда 004AF90D JNZ SHORT resman.004AF914 меняем Flag для того чтобы попасть на открытие файла 004AF90F CALL resman.00479C1C 004AF914 CMP DWORD PTR SS:[EBP-4],4 004AF918 JNZ SHORT resman.004AF91F меняем Flag для того чтобы соединиться с телефоном 004AF91A CALL resman.004AA40C вот они эти 2 адреса: 479C1C для открыть файл и 4AA40C для соединения с телефоном. Самое смешное что если посмотреть на несколько строчек вверх от (маркер1), то вот они под боком лежат нужные нам адреса, а именно: 00479C1C XOR EAX, EAX 00479C1E CALL 1.004799E0 00479C23 RET 00479C24 MOV EAX, DWORD PTR DS:[4B56D8] 00479C29 CMP EAX, 1.00400000 ; ASCII "MZP" 00479C2E JBE SHORT 1.00479C49 00479C30 CMP EAX, 500000 Вот и всё. Остается одна небольшая проблема. Её я исправлю как только выкачаю файлы прошивок. Проблема в том, что в программу нельзя добавлять неизвестные прошивки. Мой крак со всеми активированными пунктами меню, кроме "История открытия" лежит на http://namser.narod.ru Там же лежит кривой крак жадного товарища bkslash. Кривой, потому что там не работали пункты меню: история открытия обновление патчей(центр синхронизации) снять скриншот информация о телефоне не работала кнопка сохранить файл У меня всё работает кроме истории открытия. Есть еще несколько мелких косметических недоделок: - если нажать инфо о телефоне когда он не подключон то ресман просто виснет, хотя должен написать что телефон не подключен. решение проблемы - не нажимать инфу о телефоне при неподключенном теле ![]() - При нажатии снять скриншот при неподключонном телефоне пишет что тело не подключено. а потом просто в форме ничего нажать нельзя.токо в таскбаре закрыть можно Решение проблемы - не нажимать снять скриншот при неподключенном теле ![]() - не работает ассоциация программы с файлами прошивок. Решение - открывать файлы через программу. ![]() |
|
Создано: 24 декабря 2005 11:31 · Поправил: OLEGator · Личное сообщение · #2 |
|
Создано: 25 декабря 2005 14:03 · Личное сообщение · #3 |
![]() |
eXeL@B —› Основной форум —› Взлом Resman 5.0 pro от jack7277 |