Ostatnio wykorzystałem cracking i reverse-engineering przy pomocy plików wykonywalnych OllyDbg 2.01 i crackmes.OllyDbg 2.01 - Znajdowanie polecenia odwołującego się do stałego ciągu znaków
więc w tym konkretnym crackme, ja przewijał poleceń i zauważyłem PUSH z ciąg znaków ASCII "& pliku" (jest to ciąg menu):
Pomyślałem więc: „Jeśli Mogę znaleźć te informacje po prostu przewijając, z pewnością musi być automatyczny sposób znalezienia polecenia odwołującego się do określonego ciągu ".
więc dostać się do górnej części programu, naciśnij Ctrl + B i szukać ASCII „Plik”, aby znaleźć go ponownie z nadzieją:
Po naciśnięciu OK, OllyDbg nie znajdzie wcześniej PUSH. Zamiast tego, mam to:
Mmmh .. Dobrze, że nie jest to, czego się spodziewałem, ale zobaczmy, co jest w środku. więc mam rację kliknij => Podążaj Dump i uzyskać w ten sposób:
Więc tak, uważamy, że nasz ciąg w wysypisko. Jednak nadal nie znalazłem oryginalnego PUSH. Można również zauważyć, że adres napisu jest taki sam jak argument PUSH (40512C).
Jako ostatnią próbę, prawym przyciskiem myszy kliknij literę pod adresem 40512C, wybierz "Znajdź odniesienia", ale nie: brak odnośnika.
So TL; Pytanie DR: jak automatycznie znaleźć polecenie odwołujące się do ciągu? Ponieważ oczywiście nie zamierzam przewijać całego stosu poleceń za każdym razem, gdy chcę znaleźć ciąg.
PS: ciąg znaków nie pojawia się również w "łańcuchach tekstów referencyjnych".
Z góry dziękuję za pomoc.
EDYCJA: dobra, więc znalazłem rozwiązanie. Przeszukałem kod "2C 51 40 00", który jest adresem do tyłu, i znalazłem ponownie PUSH. To trochę hacky, każdy z bardziej wydajnym rozwiązaniem jest mile widziany.
Próbowałem Ctrl + R, jak stwierdzono w moim wątku (prawym przyciskiem myszy na pierwszy bajt i wybierając „znaleźć odniesienia”), ale nie dały dowolny wynik. O przerwach w pamięci: tak, niedawno je odkryłem i są niesamowite :). dzięki za podpowiedź na temat podwitryny inżynierii odwrotnej, to sprawdzę. – Ely