Edycja plików EXE


(wojtek20124) #1

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.


(enedil) #2

Napisz czytelnie, bo tego nikt żyjący nie zrozumie.

“na której ma to być wypisane” - jakie “to”?

A exeki hakuje się tak -

hexdump plik.exe | awk '{for(i=2;i<=NF;++i)print $i}' | tr -d '\n' | sed "whatever you want"

echo $'shellcode' | dd of=plik.exe

(Rolek0) #3

Tak jak każde pliki :wink:

http://re.coldwind.pl/

https://goo.gl/1zjBXT

http://bogdro.ciki.me/


(nintyfan) #4

Jedynym sposobem wydaje się dekompilacja. Jeśli nie ma skoków, to możesz posłużyć się deassemblerem i wyciąć interesujący cię kod.


(Fizyda) #5

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.


(wojtek20124) #6

“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.


(slepcu) #7

to może lepiej daj zrzut ekranu jak to ma wyglądać i ktoś ci pomoże jak to napisać od zera. 

Twoje posty wskazuję że za bardzo nie wiesz co i jak, jesteś zielony, Chcesz zrobić rzeczy, z którymi zaawansowany programista miał by problem. 

Dodatkowo: co to jest za program, jest pisany w kodzie natywnym czy jest to .Net albo Java czy inne cudo?


(wojtek20124) #8

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…


(slepcu) #9

 Nadal uważam że jesteś zielony.

Ale coś zaczynam rozumieć:

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.


(wojtek20124) #10

Tak, o to chodzi.

Ale zapis tej lokalizacji zawsze kompabitylny.


(adrian218) #11

Ja też znam tą funkcję:

 

http://developer.android.com/reference/android/os/AsyncTask.html


(wojtek20124) #12

Każdy programujący musi ją znać!


(wojtek20124) #13

Jeszcze mały szczegół: czy ktoś zna dobry program do programowania C#?


(slepcu) #14

Ja tam koduje w Vim, najlepszy edytor ever! Na windowsie działa trochę słabo, ale daje radę.

 


(wojtek20124) #15

Możesz podać pełną nazwę edytora i kompilatora? Sam znajdę pliki.


(slepcu) #16

sorki, myślałem że twoje pytanie było żartem, tak na prawdę to wszystko czego potrzebujesz da Ci Visual Studio 2015 Community (https://www.visualstudio.com/pl-pl/products/visual-studio-community-vs.aspx), za free w wielu przypadkach nawet do użytku komercyjnego.

ale to już chyba koniec tematu.


(wojtek20124) #17

Masz rację: KONIEC tematu.

Możecie już tutaj nie zaglądać!