jakie zmienne odbiera server?

0

Załóżmy, że mam skompilowany program sieciowy. Chcę sprawdzić jakie zmienne odbiera server. Przykładowo: Jeżeli programujemy w Delphi i korzystamy z komponentu socket to piszemy przykładowo:
ClientSocket1.Socket.SendText('zmienna');
Natomiast nasz server odbiera tą zmienną i reaguje na nią, np. wyświetla komunikat w Memo. I teraz chodzi mi o to, żeby ze skompilowanego servera odczytać nazwy zmiennych jakie może odbierać. W naszym przykładzie jest to"zmienna".
Wiem, że można debuggować aplikację, ale jakoś trudno się w tym połapać tym bardziej, że nie jestem super doświadczonym programistą. Przez jakiś czas zajmowałem się Delphi a teraz zacząłem uczyć się C++ a jest to mi potrzebne. Liczę na was!
Pozdrawiam:)

0

Nie dasz rady odczytać, jak się nazywa ta zmienna, bo w czasie kompilacji wszelkie nazwy zmiennych są dla komputera nieważne. Komputer operuje na wskaźnikach, a nazwy zmiennych są przydatne tylko dla człowieka. Poza tym serwerowi chyba nie robi różnicy, jaka zmienna jest przesyłana, bo i tak odbiera ją jako kolejne bajty i dopiero potem w miarę potrzeby odpowiednio je interpretuje. Możesz za pomocą debuggera ustalić, co program z otrzymanymi danymi robi i chyba nic więcej.
Pozdrawiam.

0

To może zadam trochę inne pytanie. Przykładowo: mam server programu i chcę wysłać do niego zmienną a server żeby potrafił ją zinterpretować. Chyba dobrym przykładem będzie tutaj trojan z tego względu, że servery trojanów przetwarzają często kilkadziesiąt zmiennych. Załóżmy, że posiada zmienną która odpowiada za otworzenie CD. I teraz ja chciałbym napisać program, który wysyła SendText do servera tego trojana i powoduje otwarcie cdromu. Przecież autor programu mógł w różny sposób nazwać zmienną. Może to być "opencd", "otworzcd", "1", itp.
Nie da się nic zrobić w tym względzie bez znajomości kodu źródłowego?

0

Przecież autor programu mógł w różny sposób nazwać zmienną. Może to być "opencd", "otworzcd", "1", itp.

Po pierwsze takich rzeczy nie trzyma się w zmiennych, tylko w stałych. Po drugie nie ma kompletnie znaczenia jak programista nazwał stałą - nazwa i tak jest tracona w procesie kompilacji. Dla Ciebie ma znaczenie wartość tej stałej. Wyrażasz się tak mętnie i używasz niewłaściwych terminów, że głowa boli :(

Rozumiem, że masz skompilowany program serwera, posługującego się własnym nieudokumentowanym protokołem. Chciałbyś się dowiedzieć jak "gadać z serwerem", ale nie znasz protokołu, więc nie wiesz co wysłać.

Jeżeli masz jakiegoś klienta do tego serwera, to nie powinno być większego problemu podsłuchać wymianę danych, np. tpcdumpem. Z tego można wywnioskować jaki jest protokół (np. listę akceptowanych poleceń i ich składnię), choć nie musi być to wcale łatwe. Jeśli protokół jest tekstowy, jest też jakaś szansa, że dostępne polecenia są zapisane otwartym tekstem w sekcji danych programu. Wtedy otwierając plik z programem edytorem heksadecymalnym możesz je zobaczyć. Jeśli nie da się tak prosto, to pozostaje załadować program do disassemblera i rozczajać jak działa... i w razie kłopotów męczyć Deusa. [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1