Chciałbym wiedzieć, czy da się edytować pliki wykonywalne?
Chciałbym wyciąć kod odpowiadający za generowanie lokalizacji DOS’owej po przeciągnięciu pliku na konsolę, na której ma być lokalizacja wypisana. Tworzę aplikację w DOS’ie i potrzebny jest jeden składnik, aby to działało.
Dobrze by było, żeby to był zaawansowany program, nawet trial czy demo, by były wystarczające zasoby aby to wyciąć.
Może też ktoś znać na tylę Javę, by zrobić to na graficznie ułożonej konsoli.
Czekam na odpowiedzi i z góry dziękuję.
PS Resource Hacker, XN Resource Editor, Restorator nie działają. W sensie takim, że nie czytają aplikacji.
Ja nic nie rozumie, chodzi o edycje czy wycinanie. Jak edycję to czego, czasami wystarcza hexeditor, jeśli wycinanie to też zależy czego. Jak kodu wykonalnego to już to jest inżynieria wsteczna.
“to” w znaczeniu jak wyżej napisane “lokalizacja DOS’owa”
Tekst poprawię.
Mógłbyś wytłumaczyć składnię?
Ciekawe linki i dziękuję.
Użytkownik wyżej podał kod do strony internetowej. Trzeci link.
Mam dwie opcje w swoich planach. Pierwsza to podczas edycji wyrzucić niepotrzebne elementy, zmienić nazwę sesji i dodać ekran startowy, w którym by pisał tekst i był jeden przycisk na dole z etykietą “Rozumiem”.
Drugi to wycięcie potrzebnego kodu i oprawienie go tak jak to wyżej opisałem. Do tego przyda się pierwszy link użytkownika “Rolek0”. #8 metoda na stronie “Stosowanie obcego kodu w swojej aplikacji” czy coś w podobie.
Zrzutu ekranu dam później, bo piszę temat na telefonie, ale mogę podać stronę do tej aplikacji: Advanced BAT to EXE Converter. Rozumiejąc język angielski i zapoznając się z interfejsem: na dole jest konsola, a czytając gdzieś, można na tą konsolę przeciągnąć plik wsadowy .bat i zostanie otworzony plik, a na konsoli zostanie wypisane “Opened (C:\Documents and Settings…\info.bat)” czy coś w podobie. Tak samo w oknie, w którym pracuje się z kodem: przeciągnij na pole, a na konsoli wypisze się jedno a to samo. Tak samo jak podczas kompilowania: wejdę w odpowiednią opcję i na konsoli wypisze odpowiednie dane.
Posiadam środowisko Eclipse, programowałem na Androidzie, trochę zacząłem z Javą i szczerze języki podobne m.in. wątkowanie w Javie. Android to łatwy i przejrzysty język, a Java ma już nie po kolei, bo trzeba robić kod odpowiadający za okna i funkcje przycisków w jednym pliku!
Podałem wyżej, co to za program: Converter. Co to za kod? Najpewniej C++, Java lub jakiś język w stylu VBA. Najpewniej wykorzystuje sam podsystem MS-DOS w ścieżkowaniu, albo z czytania atrybutu ścieżkowania DOS. Co ciekawe, zauważyłem, że jeśli to robię z folderów systemowych, podaje ścieżkę rozszyfrowanym przez siebie kluczem: 5 dużych liter folderu, bez spacji i jeśli jest taki 1 folder to reszta bez spacji ~1. Jeśli z folderu stworzonemu przeze mnie, bez tego klucza , w standardzie Windows. Dziwne…
Chcesz aby program wypisał Ci ścieżkę DOS’ową (w formacie 8.3) z wrzuconego na konsolę pliku. Jest to format zapisu nazw plików niegdyś stosowany, bo DOS nie radził sobie jakoś z dłuższymi nazwami plików. To co piszesz z ~1 itd jest wlaśnie efektem tego działania. O to chodzi ?
W api windows jest metoda GetShortPathName (biblioteka kernel32.dll). Dla C++ zrobisz to bezpośrednio ładując odpowiedni plik nagłówkowy, C# czy Java odpowiednio PInvoke/JNI.
Ale w sumie to teraz nikt z tego zapisu nie korzysta, to zaszłość.
Co do samego pobrania ścieżki do wrzuconego na konsolę pliku to obecnie w Windowsie jest to to samo zdarzenie co wpisanie tej ścieżki z klawiatury - używasz (w C#) Console.ReadLine(), które zwyczajnie oczekuje wpisania znaków z klawiatury i potwierdzenie klawiszem Enter, ale gdy upuścisz plik to system sam w to miejsce wpisuje ścieżkę do pliku.