Mam exec w zasobach. Czy mozna nie wywalajac go na hdd uruchomic (z pamieci) z parametrem, tak jak z linii polecen?
0
0
Z tego co wiem z plikiem exe jest to nie mozliwe ... Możesz cos takiego zrobic np. z plikiem wave ...
0
Jeśli to plik COM - to się da (metoda nietestowana i tylko dla obeznanych z assemberem, ale powinna zadziałać).
- Załadować do pamięci cały plik.
- Wrzucić na stos zawartość rejestru CS (code segment)
- j/w ale z IP (instruction pointer), dodatkowo zwiększonym o x wyliczone na jakiej tam podstawie (żeby wskazywało na pierwszą instrukcję po tym wszystkim)
- Zmodyfikować odpowiednio aktualne CS:IP żeby wskazywało na początek COM'a w pamięci.
- W samym pliku COM, na końcu, muszą być instrukcje przywracające CS:IP ze stosu w celu powrotu do programu wywołującego.
Tutaj jest właśnie ważne zwiększenie IP o ten nieszczęsny x bo inaczej by się zapętliło. Wątpię, żeby ci się to przydało, ale niech zostanie jako ciekawostka, poza tym może ktoś tego będzie kiedyś potrzebował? Pozostaje tylko kwestia tego, czy:
a) Windows pozwoli na zmianę segmentu kodu i wskaźnika instrukcji programowi który ma uprawnienia trzeciego stopnia (ring 2).
b) Tryb chroniony pozwoli na taki przeskok w pamięci.