partoftheworlD Опубликовано 19 марта, 2017 Поделиться Опубликовано 19 марта, 2017 (изменено) Небольшая задачка, чтобы проверить свою внимательность и навыки в чтении и понимании инструкции. Условия задачи: -Нельзя патчить байты. Необходимо: Ввести правильный пароль и получить надпись об успешном выполнении, и написать мне как вы решили и какой пароль ввели. Ничего не шифрованно, не сжато, нет никаких анти-отладочных трюков. Если понравится в следующий раз постараюсь сделать что-нибудь по сложнее и первый кто решил получит игру в стим. В версии V2 особых изменений нет, задание остается тоже, только функции уже стали виртуальными на счет них можно посмотреть тут, это немного ухудшит читабельность и поиск соответственно. Всем удачи! v1 Облако UnlockMe.exe. VirusTotal v2 Облако UnlockMe_V2.exe VirusTotal Изменено 20 марта, 2017 пользователем partoftheworlD 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Egorka Опубликовано 20 марта, 2017 Поделиться Опубликовано 20 марта, 2017 Нашел, где используется строка "Hello what is your name?": Скрытый текст "Гуляя" по этому участку кода выяснил, что сравнение введенного пароля с эталонным происходит при вызове функции: Скрытый текст В ней обнаружил, что сравнение введенного пароля с эталонным начинается с 37 символа от начала введенного пароля: Скрытый текст Т.е. первые 36 символов могут быть любыми, а последние 7 символов - "1234567". Например: Скрытый текст Ну как, правильно я сделал или нет? 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 20 марта, 2017 Автор Поделиться Опубликовано 20 марта, 2017 (изменено) 9 часов назад, Egorka сказал: Ну как, правильно я сделал или нет? Молодец все правильно, в программе рассчитано использование переполнения буфера для ввода пароля и логина, чтобы перемещаться по структуре и вводить пароль в настоящий буфер. через логин тоже можно попасть в буфер который сравнивается с реальным паролем и решить задачу, но пароль будет длиннее. Вот исходный код в нем некоторые наработки и всякий мусор, так что не ругайте за быдлокод Скрытый текст #include <windows.h> #include <iostream> class anyvalue { public: virtual ~anyvalue() = default; virtual bool m_Win(); virtual bool m_Exit(); char m_cName[20] = ""; char m_cPassword_input[20] = ""; char JustEmptyBuffer[12] = ""; char m_cRealBuffer[20] = ""; char* m_cRealPassword = "1234567"; WORD m_wState = 0; }; auto a = new anyvalue; class trash : anyvalue { public: /************************************************************************/ /* Очистка мест под буферы перед использованием */ /************************************************************************/ virtual bool m_Clean() { memset(m_cName, 0x00, sizeof(m_cName)); memset(m_cPassword_input, 0x00, sizeof(m_cPassword_input)); memset(m_cRealBuffer, 0x00, sizeof(m_cRealBuffer)); return true; } /************************************************************************/ /* Проверка паролей */ /************************************************************************/ virtual bool Validator() { if (!strcmp(m_cRealPassword, m_cRealBuffer)) { return true; } else { return false; } } }; auto t = new trash; int main() { if (t -> m_Clean()) { printf_s("Hello what is your name?\n:"); std::cin >> a -> m_cName; if (strlen(a -> m_cName) >= 20) { a -> m_wState = 1; } printf_s("\nAnd write your password!\n:"); std::cin >> a -> m_cPassword_input; if (strlen(a -> m_cPassword_input) >= 50) { a -> m_wState = 2; } switch (a -> m_wState) { case 1 : printf("Try using a shorter name!\n"); a -> m_Exit(); break; case 2 : printf("Try using a shorter password\n"); a -> m_Exit(); break; } if (t -> Validator()) { a -> m_Win(); } } } bool anyvalue::m_Win() { printf_s("Well done, now write the solution in profile(@partoftheworlD)."); m_Exit(); return true; } bool anyvalue::m_Exit() { delete t; delete a; Sleep(5000); exit(1); return true; } . Изменено 20 марта, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 22 марта, 2017 Поделиться Опубликовано 22 марта, 2017 Посоветуй те где скачать x64dbg - со всеми плагинами Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 марта, 2017 Автор Поделиться Опубликовано 22 марта, 2017 3 минуты назад, Dison сказал: Посоветуй те где скачать x64dbg - со всеми плагинами http://x64dbg.com https://github.com/x64dbg/x64dbg/wiki/Plugins 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 22 марта, 2017 Поделиться Опубликовано 22 марта, 2017 Только что, partoftheworlD сказал: http://x64dbg.com https://github.com/x64dbg/x64dbg/wiki/Plugins Спасибо!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения