Pozivanje procedure eksternog procesa (drugog programa)

Pozivanje procedure eksternog procesa (drugog programa)

offline
  • Igor Đorđević
  • Pridružio: 28 Sep 2007
  • Poruke: 39
  • Gde živiš: Bor, Srbija

U poslednjih par dana sam prekopao net uzduz i popreko, i vise ne znam ni sta da trazim. Evo objasnjenja sta mi je potrebno...

Recimo da imamo neki program (proces) koji ima vise "ekrana". Kad se program startuje, prikaze se pocetni ekran. Korisnik pritisne "enter", ucita se neka slika sa diska, i otvori se drugi ekran sa tom slikom... Ako mi tu sliku sad nadjemo na disku i promenimo je, u programu i dalje stoji stara slika jer je ona u memoriji, dok se ne ucita nova (program je sve vreme aktivan). Novu mozemo videti ako se vratimo jedan korak (ekran) nazad, pa ponovo napred na drugi ekran - prilikom ovog prelaska program ucitava sliku ponovo.

E sad, ono sto mene zanima, ako znam ID procesa, mogu da citam iz njegove memorije u da u nju pisem, kako da naknadno "okinem" ponovno ucitavanje slike, sto program radi prilikom prelaska sa prvog na drugi ekran (ili par "ekrana" ranije), a da ostanem tu gde jesam (na drugom ekranu)?

Isto ako je u pitanju broj koji se nalazi u memoriji procesa, program broj ucita i ispise, ja ga onda promenim u samoj memoriji, i kako onda da nalozim programu da ponovo ucita (izmenjeni) broj?

Koristio sam programe IDA i OllyDbg ne bih li nasao nesto u asembleru, ali obzirom da asembler tek upoznajem i znam tek neke osnovne stvari, nisam se bas usrecio. Preko WinAPIOverride32 ne znam sta tacno da trazim kad namestim da se prati izvrsavanje procesa, koristio sam i EasyHook 2.5 i ProcessMonitor, ali ista prica - puno podataka, a ja ne znam sta trazim.

Da li je ovo uopste moguce - nekako "usnimiti" sta se desava u programu u odredjenom trenutku, uhvatiti poziv odredjene procedure, pa kasnije to reprodukovati? Mislim, znam da sigurno jeste, ali koliko je komplikovano? Mora li se prckati po asembleru, ili je dovoljan WinAPI i njegove poruke, njihovo "hvatanje" (da bi znali sta nam treba) i kasnije ponovno slanje procesu (da ponovi ucitavanje)?

Znaci, u kodu imam proceduru za upis npr. broja na neku adresu memorije aktivnog procesa (nekog), kako da nakon toga procesu posaljem poruku da ponovo ucita taj broj u promenjivu gde on inace ide? Kao "izmena + refresh" promenljive Smile

GUZ - Glavom U Zid Svaka pomoc je dobrodosla, makar bile to i samo smernice na sta da obratim paznju, jer ne znam vise u kom smeru da idem - assembler, API, biblioteke (.dll), nesto trece...? Zagrljaj



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ako osim slike nemas niceg drugog na toj formi (nista bitno), onda mozes da u tom drugom programu izazoves pritiskanje dugmica Back pa onda Next, i time izazoves osvezavanje slike.



offline
  • Igor Đorđević
  • Pridružio: 28 Sep 2007
  • Poruke: 39
  • Gde živiš: Bor, Srbija

bobby ::Ako osim slike nemas niceg drugog na toj formi (nista bitno), onda mozes da u tom drugom programu izazoves pritiskanje dugmica Back pa onda Next, i time izazoves osvezavanje slike.

To je prvo sto mi je palo na pamet, ali je dosta neprakticno... Kod jednog vracanja i `ajde nekako, ali kad se treba vratiti unazad vise formi, nastaje problem - potrebno je vreme dok program ucita svaku formu, a ako se taster pritisne u medjuvremenu, on ga iskulira. Drugo, u zavisnosti od toga gde se kursor trenutno nalazi, zavisi i koje dugme treba pritisnuti da se ide napred/nazad kroz menije, nije uvek isto. I trece, morao bih da vidim za koje vreme mogu proslediti sledece "pritiskanje", jer ako se bas brzo ispritiskaju dugmici na tastaturi, program uhvati samo prvih par pritiskanja, a ostalo iskulira - bojim se da ce se to desiti i sa prosledjenim pritiskanjem, ako prosledim sve jedno za drugim bez pauze (ili nece?)

Nisam to zeleo na ovaj nacin, ali ako se ne nadje neko elegantnije resenje, ovo mi uvek stoji kao solucija, to bar nije problem da se napravi Smile

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Ne verujem da ovo mozes da uradis pomocu Win API-a...
Ali neka se javi neko ko zna vise od mene o njemu...
Mozda neke biblioteke postoje...Hmmm...Ne znam...
Redak problem...
Zanimljivo...

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Moze.
Treba da locira Canvas na kojem je slika, pa da sam natera Canvas da ucita drugu sliku.

offline
  • Igor Đorđević
  • Pridružio: 28 Sep 2007
  • Poruke: 39
  • Gde živiš: Bor, Srbija

Ja samo da napomenem da je u pitanju igra, dakle fullscreen DirectX aplikacija. Zato sam i pisao ono "prvi 'ekran', drugi 'ekran'", jer ne znam kako su uredjene te "pojave" unutar DirectX-a, to je meni koji igraca vodi kroz izbor opcija igre, a sad da li su i to neke vrste formi, da li je canvas slican onom obicnom, stvarno ne znam...? Sad

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Uh.
To jedino ako naleti Srki82, pa da ti nesto kaze o tome. On se razume u te graficke podsisteme.

offline
  • Igor Đorđević
  • Pridružio: 28 Sep 2007
  • Poruke: 39
  • Gde živiš: Bor, Srbija

Sad sam na kratko pricao sa Srkijem preko MSN-a... Izgleda da cu morati da gurnem nos ozbiljnije u assembler.

Ako nekom iskrsne neka ideja, ili ima pozamasnog iskustva sa assemblerom, a usput ima i nesto slobodnog vremena, slobodno neka se javi ovde Smile

Ko je trenutno na forumu
 

Ukupno su 513 korisnika na forumu :: 5 registrovanih, 0 sakrivenih i 508 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Andrija357, hyla, voja64, zlaya011, 1107