Как сделать новый студенческий
Серия "Бюрократические квесты"
==================================================================
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 ;)
=================================================================================