Program wprowadzajądzy komende w inny program. C++
Ostatnio zmodyfikowano 2014-01-04 16:08
CodeFun Temat założony przez niniejszego użytkownika |
Program wprowadzajądzy komende w inny program. C++ » 2014-01-03 14:02:24 Witam W celu edukacji postanowiłem zrobić dwa programy konsolowe w C++. Jeden program po uruchomieniu prosi o podanie imienia po czym wypisuje na ekranie podane imię (wow) #include <iostream>
main() { string imie; cout << "Podaj Imie:" << endl; cin >> imie; cout << "Podane Imie to " << imie << endl; }
Jak widać nie jest to poziom fizyki kwantowej.Problem jest w drugim programie, który uruchomi ten banalny po wyżej i wpisze mu żądane imię, po czym "kilknie" eneter. Do uruchomienia programu potrzebna jest komenda WinExec( "c://imie.exe", SW_NORMAL ); Tyle wiem :E Teraz potrzebowałbym czegoś w rodzaju wskaźnika, referencji do adresu programu, albo procesu? Aby móc na nim działać, czyli uchwyt. Jak ten uchwyt zdobyć ? Jak poruszać się bo "obcym" programie z poziomu innego programu ? |
|
pekfos |
» 2014-01-03 15:32:59 CreateProcess()Jak poruszać się bo "obcym" programie z poziomu innego programu ? |
Na takie pytania nie odpowiadamy. |
|
leon_w |
» 2014-01-04 11:52:31 |
|
CodeFun Temat założony przez niniejszego użytkownika |
» 2014-01-04 15:50:18 Dziękuję za wskazówki. Rozumiem tajemniczość tematyki :) Jednak wierzcie mi, jestem już za stary na to, żeby się zmieniać w internetowego chochlika, chcę tylko wiedzieć jak to wygląda ogólnie, a gdy zajdzie potrzeba wykorzystać coś pozytywnie. Nie można z kucharza od razu robić potencjalnego morderce bo ma nóż. Czy moglibyście mi jednak powiedzieć jak działa sam mechanizm takiej kontroli? ,a dalej będę sam grzebał. Ja rozumiem to tak:
Na przykładzie powyższego banalnego programu
1.Uruchamiamy mój program 2.Pozyskujemy uchwyt (adres pod którym został uruchomiony program) 3.Pozyskujemy adres/wskaźnik zmiennej "imie". Rozumiem, że to będzie coś na zasadzie offsetu od początkowego adresu programu. Zatem trzeba by zdeassemblować mój program i zobaczyć pod jakim adresem "siedzi" zmienna imie ? Załóżmy, że jest to 50 bajtów od adresu 0x00, zatem zawsze będzie to x+50. Mi potrzebne jest to x. 4.Wpisujemy do adresu x+50 "imie" co chcemy dzięki pewnym funkcją, tym samym ingerując programem poprzez program.
Streszczając wszystko rozbija się o adresowanie. Równie dobrze wystarczy TYLKO(?) dowiedzieć się pod jakim adresem jest w danej chwili zmienna "imię" i wpisać tam coś z poziomu innego programu i nastąpi nieautoryzowana zmiana he? |
|
pekfos |
» 2014-01-04 16:08:24 Nie odpowiadamy na takie pytania. Zakładanie tematów na forumNa przykładzie tego banalnego programu, powinieneś wysłać dane na jego standardowe wejście. CreateProcess() i przykład na MSDN. Tematy z takimi pytaniami, jak te z Twoje ostatniego postu, będą usuwane. |
|
« 1 » |