Don Reverso
05.08.2024, 02:20
Название: Крестики
Категория: reverse
Платформа: antichat
В качестве сегодняшнего подопытного нас ждёт один файл - cross_cr.exe. Для начала закинем его в DIE:
https://forum.antichat.xyz/attachments/29113419/1722806405274.png
Судя по всему, бинарник не упакован, что явно радует. Попробуем запустить:
https://forum.antichat.xyz/attachments/29113419/1722806615635.png
Штош, действительно похоже на крякмис. И какие же ревёрсеры первым делом не попытают удачи в решении?
https://forum.antichat.xyz/attachments/29113419/1722806805256.png
Увы, в следующий раз обязательно получится... А теперь ближе к делу - забросим наш файл в IDA:
https://forum.antichat.xyz/attachments/29113419/1722806960075.png
Вот так выглядит наш main- вполне узнаваемая система окошек и формочек. А где есть формочки, там есть и отдельные функции-обработчики этих формочек, не правда ли? Из представленного более-менее похожей на это является функция sub_140001180() (14 строка). Заглянем внутрь:
https://forum.antichat.xyz/attachments/29113419/1722807149902.png
Да - здесь объявлены элементы окна, их характеристики, свойства и прочее. А если пролистать чуть ниже:
https://forum.antichat.xyz/attachments/29113419/1722807220411.png
То можно наткнуться на функцию-обработчик - sub_1400013A0(). Кроме кнопки и двух полей ввода у нас из видимого ничего не имеется, поэтому можно предположить, что в этой функции и будут обрабатываться введённые нами данные. Не будем гадать и залезем в неё:
https://forum.antichat.xyz/attachments/29113419/1722807502774.png
Из интересного - мы оказались правы! Перед нами начало алгоритма проверки флага. Всего в нём, считая CODEBY{}, 27 символов, причём на 13, 18 и 23 позициях стоят символы
"-"
, между ними по 4 символа. Напоминает серийник? Посмотрим дальше:
https://forum.antichat.xyz/attachments/29113419/1722807771824.png
А дальше больше: те 4 символа между
"-"
на самом деле являются четырёхзначными числами, которые выходят из под функции wtoi (напоминаю,
wtoi("1234") == 1234
). Что интересно, проверка на имя здесь скромно уместилась в 42-ю строку - у нас для имени имеется лишь один вариант:
https://forum.antichat.xyz/attachments/29113419/1722807978175.png
Поэтому запомним и вернёмся к проверке флага. Судя по коду, эти 4 числа, нами написанные, участвуют в арифметической проверке, и поскольку из операций здесь не фигурирует остаток от деления и других небиективных функций, а лишь набор
"+-^"
, то декодируются эти числа однозначно - надо лишь взять конечные значения и выполнить все операции в обратном порядке, в питуне это делается довольно быстро. В итоге у вас должно получиться 4 четырёхзначных числа, которые я не имею права здесь называть - а то флагшеринг выйдет...
Попробуем подставить найденное нами имя и высчитанные числа в форму с флагом, не забыв последний обернуть в CODEBY{}:
https://forum.antichat.xyz/attachments/29113419/1722809230670.png
Таск решён! Единственный затуп, который у вас может возникнуть (был у меня, по крайней мере) - если в качестве конечного проверочного для num_4числа IDAдаст не отрицательное, а гигантское положительное (в unsigneg представлении). В таком случае просто не забываем, что иногда для счастья можно просто вычесть 2^32 и получить нормальное четырёхзначное число =]
Надеюсь, этот небольшой райтап помог вам в нашей нелёгкой стезе.
Удачного ревёрса!
made 4@rev_with_da_boys
Категория: reverse
Платформа: antichat
В качестве сегодняшнего подопытного нас ждёт один файл - cross_cr.exe. Для начала закинем его в DIE:
https://forum.antichat.xyz/attachments/29113419/1722806405274.png
Судя по всему, бинарник не упакован, что явно радует. Попробуем запустить:
https://forum.antichat.xyz/attachments/29113419/1722806615635.png
Штош, действительно похоже на крякмис. И какие же ревёрсеры первым делом не попытают удачи в решении?
https://forum.antichat.xyz/attachments/29113419/1722806805256.png
Увы, в следующий раз обязательно получится... А теперь ближе к делу - забросим наш файл в IDA:
https://forum.antichat.xyz/attachments/29113419/1722806960075.png
Вот так выглядит наш main- вполне узнаваемая система окошек и формочек. А где есть формочки, там есть и отдельные функции-обработчики этих формочек, не правда ли? Из представленного более-менее похожей на это является функция sub_140001180() (14 строка). Заглянем внутрь:
https://forum.antichat.xyz/attachments/29113419/1722807149902.png
Да - здесь объявлены элементы окна, их характеристики, свойства и прочее. А если пролистать чуть ниже:
https://forum.antichat.xyz/attachments/29113419/1722807220411.png
То можно наткнуться на функцию-обработчик - sub_1400013A0(). Кроме кнопки и двух полей ввода у нас из видимого ничего не имеется, поэтому можно предположить, что в этой функции и будут обрабатываться введённые нами данные. Не будем гадать и залезем в неё:
https://forum.antichat.xyz/attachments/29113419/1722807502774.png
Из интересного - мы оказались правы! Перед нами начало алгоритма проверки флага. Всего в нём, считая CODEBY{}, 27 символов, причём на 13, 18 и 23 позициях стоят символы
"-"
, между ними по 4 символа. Напоминает серийник? Посмотрим дальше:
https://forum.antichat.xyz/attachments/29113419/1722807771824.png
А дальше больше: те 4 символа между
"-"
на самом деле являются четырёхзначными числами, которые выходят из под функции wtoi (напоминаю,
wtoi("1234") == 1234
). Что интересно, проверка на имя здесь скромно уместилась в 42-ю строку - у нас для имени имеется лишь один вариант:
https://forum.antichat.xyz/attachments/29113419/1722807978175.png
Поэтому запомним и вернёмся к проверке флага. Судя по коду, эти 4 числа, нами написанные, участвуют в арифметической проверке, и поскольку из операций здесь не фигурирует остаток от деления и других небиективных функций, а лишь набор
"+-^"
, то декодируются эти числа однозначно - надо лишь взять конечные значения и выполнить все операции в обратном порядке, в питуне это делается довольно быстро. В итоге у вас должно получиться 4 четырёхзначных числа, которые я не имею права здесь называть - а то флагшеринг выйдет...
Попробуем подставить найденное нами имя и высчитанные числа в форму с флагом, не забыв последний обернуть в CODEBY{}:
https://forum.antichat.xyz/attachments/29113419/1722809230670.png
Таск решён! Единственный затуп, который у вас может возникнуть (был у меня, по крайней мере) - если в качестве конечного проверочного для num_4числа IDAдаст не отрицательное, а гигантское положительное (в unsigneg представлении). В таком случае просто не забываем, что иногда для счастья можно просто вычесть 2^32 и получить нормальное четырёхзначное число =]
Надеюсь, этот небольшой райтап помог вам в нашей нелёгкой стезе.
Удачного ревёрса!
made 4@rev_with_da_boys