Mam program, którego często używam, który jest wykonany z .NET. Ten program ma mały błąd, który jest bardzo denerwujący, a programisty aplikacji nie można nigdzie znaleźć.Napraw błędy w programie .NET bez dostępu do źródła
Znalazłem lokalizację problemu w odbłyśniku i chcę dodać tutaj pojedynczą instrukcję if, a następnie ponownie skompilować program.
Jaki jest najprostszy sposób to zrobić?
Próbowałem użyć funkcji eksportu w odbłyśniku, ale wydaje się, że nie działa idealnie. Na przykład brakuje wielu użytecznych dyrektyw, a wyliczenia, które są przesyłane do iz powrotem, również nie są eksportowane poprawnie. Wierzę, że mogę to naprawić z pewną pracą, ale zastanawiam się, czy jest jakiś łatwiejszy sposób na zrobienie tego.
Aktualizacja: rozwiązać go w ten sposób:
Program jest pojedynczy plik wykonywalny
- Znajdź błąd w reflektorze z C# -widok. Następnie przejdź do widoku IL, aby zobaczyć, czego powinieneś szukać w kroku 5.
- Otwórz program, który chcesz zmienić za pomocą ildasm
- Naciśnij przycisk dump i wybierz pusty folder, domyślne ustawienia zadziałały dla mnie.
- Znajdź plik .il w tym folderze i otwarty z dowolnej TextEditor
- Znajdź kod z kroku 1.
- zastąpić go nowym kodem, w moim przypadku po prostu musiałem wymienić całą zawartość z funkcji prosty powrót (IL_0000: ret). Nie sądzę, że wszystkie poprawki będą tak łatwe.
- Otwórz okno poleceń w folderze z kroku 3
- Wykonaj ilasm, musiałem również dołączyć pewne zasoby z oryginalnego pliku exe. Są one automatycznie wyprowadzane z ildasm. Użyłem tego ilasm jak ten "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ ilasm.exe" test.il /resource=test.res /output=FixedProgram.exe
Gotowe ! W tej chwili korzystałem z programu tylko kilka minut, ale wygląda na to, że działa podobnie jak poprzednio, z wyjątkiem błędu :)
Wystąpiły również pewne problemy z ustawieniami aplikacji. W pliku % appdata% \ ProgramName był folder o nazwie coś w rodzaju: ProgramName.exe_Url_qa5i3p42aomuvoxpuxuficvbmngksgjs, gdzie przechowywane są wszystkie ustawienia. Mój nowy plik wykonywalny utworzył nowy folder z różnymi losowymi literami na końcu i domyślnymi ustawieniami. Aby skopiować ustawienia używane przed skopiowaniem całej zawartości starego folderu na nową.
Dzięki za zaakceptowanie tego jako odpowiedzi Erik, brzmi to jak to, co zadziałało dla ciebie, ale dla innych osób czytających to zdecydowanie sprawdź Reflexil (http://sebastien.lebreton.free.fr/reflexil/) (jak wspomniano w Jb Evaina Odpowiedź), ponieważ to wszystko będzie bezpośrednio dokonać zmiany w zespole za pomocą kodu C# bez martwienia się o IL, i zapisać poprawioną wersję zespołu, wszystko z reflektora naprawdę łatwo. Gorąco polecam sprawdzenie, jest to świetne narzędzie. –