Witam,
Bawię się trochę w rozwiązywanie zadań i trafiam na takie, których rozwiązania są głupie, albo trudne.
Zakładając, że nie mogę binarki patchować mam np. znaleźć taką sumę znaków, których suma stringa da wartość x, a iloczyn wszystkich elementów da wartość y, gdzie y ma precyzję do 32bitów, a rozkład wymaganej liczby y nie jest rozkładany na te podstawowe liczby pierwsze, mieszczące się w zakresie bajta.
Sam rejestr się pewnie kilka razy przekręca i ucinany do tych & 0xFFFFFFFF.
Wydaje mi się, że tylko brute forcem można znaleźć kolizję pasującą do wzorca, chyba że jest jeszcze jakaś metoda.
Ale jeśli głównie tak to wygląda, to chyba każdy reverse powinien mieć zbudowany silnik brute force przystosowany do obsługi wszystkich rdzeni ewentualnie gpu i podziale zakresu przeszukiwań wraz z wyłuskiwaniem rekurencyjnym poszczególnych elementów i mapowaniem na funkcje testującą wynik.
Spotkałem się jeszcze z takim zadaniem na opracowanie algorytmu, znając tylko dane wejściowe i wyjściowe.
Jak uzmysłowić sobie, jak to ugryźć?
Widziałem też algorytm, który prawdopodobnie coś testował ciągle losując losowe dane, tak długo aż coś znalazł, prawdopodobnie to był algorytm probabilistyczny, ale nie zrozumiałem co dokładnie robi, bo ktoś umieścił w jednej funkcji wszystko i był wielki bigos.
Wiecie jak takie coś analizować, albo czego szukać?