- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Heap/ Quest.Stud >


Как сделать новый студенческий

Серия "Бюрократические квесты"

==================================================================
Tutorial 000
Как сделать новый студенческий
(c) CS:ED
==================================================================

1. Объект взлома.

   Вы когда-нибудь сталкивались с проблемой получить новый студенческий ?
   В этом учебнике рассматривается решение этой примитивной задачи.
   Это самый простой туториал, так что, если вы новичок - то начните с него.

2. Точка входа.

   Запускать будем программу, которая называется Деканат.exe
   Причем любую версию. От любого ВУЗа.
   Просто запускаем ее с параметрами "чистый бланк" (можно просто купить в
   канцелярском или книжном магазине) и "фото 3х4" (надеюсь, вы знаете, как
   работать со сканнером ;)
   Если при запуске программы она ругнется парой-тройкой МессагаБоксов 
   непонятного содержания - не обращайте внимания, жмите Ок - это просто глюки.

3. Подбираем ФИО

   Если вы хотите получить новый студенческий на себя и вы зарегистрированный
   пользователь этого ВУЗа - то зачем вы, собстенно, это читаете ? 
   (Ну или можете сразу переходить к пункту 4) 
   А вот если вы им не являетесь, а студенческий все-таки хочется, то сейчас
   ваша задача узнать ФИО, которые сожруться программой.
   Для этого делаем следующее.
   Когда программа выдаст вам окошко, в котором вы должны ввести ФИО, пишете
   там любую фигню, но кнопку Ok пока не трогаете.
   Нажимаете Ctrl+D чтобы попасть в отладчик и ставите бряк-пойнт на функцию
   hmemcpy() :

   bpx hmemcpy

   Снова Ctrl+D и вот теперь жмем Ок.
   Бах - мы снова в отладчике, причем прервались мы на функции hmemcpy()
   Смотрим, куда копируются строки, введенные нами в качестве ФИО, жмем F12
   столько раз, сколько нужно, чтобы оказаться в модуле Деканат. Вот как выглядит 
   вызов функций получения текста из диалогового окна:


   mov 	edi, ds:GetDlgItemTextA
   lea 	eax, [esi+138]
   push 	eax 			; Фамилия
   push 	2bba
   push 	ebp
   call 	edi 			; GetDlgItemTextA->hmemcpy
   lea 	eax, [esi+264]
   push 	ebx
   push 	eax 			; Имя
   push 	2bbb
   push 	ebp
   call 	edi 			; GetDlgItemTextA->hmemcpy
   lea 	eax, [esi+390]
   push 	ebx
   push 	eax 			; Отчество
   push 	2bbc
   push 	ebp
   call 	edi 			; GetDlgItemTextA->hmemcpy
   pop 	edi
   pop 	ebp
   pop 	ebx
   ...
 
   и очень скоро видим вот такую штуку:


   lea     eax, [esi+138]       ; указатель на вашу фамилия
   push    eax                  ; так мы передаем фамилию в функцию 00403dd0 
   lea     eax, [esi+264]       ; указатель на ваше имя
   push    eax 
   lea     eax, [esi+390]       ; указатель на ваше отчество
   push    eax 
   push    008са628		  ; ...и еще на какой-то адрес (очень интересно!)

   call    00403dd0		  ; скорее всего, тут они и сравниваются...

   add     esp, 08
   test    eax, eax             ; смотрим, что вернула функция 00403dd0
   jnz     00402bc0             ; прыгаем на "облом"

   call    Деканат.Registration ; а вот это надо не пропустить

   Т.е. все просто - берем данные, полученные из окна регистрации и сравниваем
   их с некоторой базой значений. Если значения совпали - идем дальше. Если нет -
   извините, досвидания.

   В данном случае нам даже не придется исследовать функцию 00403dd0.
   Достаточно просто посмотреть содержимое памяти по адресу  008ca628

   d 008ca628

   Wow ! Список всех зарегистрированных студентов !

   Ну что ж - выбираем любого, какой больше нравится, записываем данные,
   делаем то же самое для имени и отчества и щелкаем F5.
   Получаем сообщение об ошибке "Студент не найден в БД Деканата"

   В принципе, можно было переключить zf после test eax,eax , но пользы
   от этого не будет, потому что при генерации билета работает другая 
   программа, к которой вы доступа все равно не имеете, а она тоже делает
   такую проверку. Так что, в лучшем случае, получите сообщение о некорректной
   регистрационной информации, а в худшем - на вас могут наехать.

4. Регистрируемся.

   Все то же самое - запускаемся с теми же ключами, но, возможно, придется 
   ответить на вопрос "А почему в перый раз данные были неправильные ?"
   Возможные варианты ответа: "Перезанимался", "Оговорился", "А вы меня 
   неправильно услышали"...

   В итоге вы опять увидите окошко с регистрацией. Только теперь вводите 
   то реальное ФИО, которое вы подсмотрели в прошлый раз.

5. Результат

   Результат работы программы - смещение во временнОм сегменте относительно
   текущего значения системного времени. Можете посмотреть это прямо в 
   отладчике, или дождитесь МессагаБокса с сообщением.

6. Получаем студенческий.

   Рассчитываем абсолютное время и в это время (или позже, но не очень позже)
   снова запускаем программу Деканат.exe, но уже с параметром "А мне сказали
   за билетом придти" и получаете сгенерированный студенческий с вашей 
   фотографией, но с нужной фамилией

   Все. Вот так просто. 

=================================================================================
... Thinking in Assembler. Hack the life ;)
=================================================================================




* #WhiteUnicorn/ StartPage/ Heap/ Quest.Stud >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile