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 :)
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...? :)
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 :)
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...? :)