przeszukiwanie pamieci/nadpisywanie procedury

0

witam, potrzebuje przeszukac pamiec jakiegos programu (do ktorego mam uchwyt i odpowiednie prawa) i znalezc dana rzecz (procedure) ktora nastepnie musze nadpisac

ma ktos jakis pomysl, jak to moge zrobic? ;)

btw, moderatora prosze o odblokowanie (ewentualnie wyczyszczenie) tego:
http://4programmers.net/Forum/viewtopic.php?id=103235 tematu

0

Hm,

  1. Jeżeli chodzi o przeszukiwanie pamięci(kodu programu) to istnieje pewien problem poniewarz procedury które nie są eksportowane nie są w żaden sposób oznaczone. Dość łatwo zidentyfikować wyjście z procedury przez wyszukanie kodu instrukcji ret. Początek procedury/funkcji można zidentyfikować przez obecność instrukcji call której parametr wstazuje na początek procedury/funkcji ale należy pamiętać że nie jest to łatwe zadanie.

  2. Jeżeli w jakiś cudowny sposób udało by się nam odnaleść początek takiej metody to by ją zmodufikować musimy pogrzebać w kodzie maszynowym takiej proc/func ale na przeszkodzie stoi fakt że blok pamięci w którym kest umieszczony kod prawie zawsze jest readonly. Na przeszkodzie stoi także fakt iż zwiększenie długości procedury spowoduje się zmianę argumentów instrukcji call i jmp w kodzie który jest wcześniej i który odwołuje się do adresów wyższych niż wrowadzona modyfikacja o to należ zadbać.

To tyle jeżeli chodzi o ogólniki. W przypadku jakiegoś konkretnego przypadku można probować rozwiązać problem środkami mniej bolesnymi.

Pozdrawiam.

0

Nie wiem, czy nie prościej byłoby przerobić wszystkie interesujące nas call'e, tak, żeby skakały do naszej procedury, a nie do oryginalnej (ew. taki skok bezwarunkowy dodać na samym początku bloku tamtej funkcji). Wtedy znika problem z długością i przepisywaniem naszej procki, na cudzą.

A najprościej znaleźć tą procedurę w tamtym programie przy użyciu jakiegoś debuggera/disassemblera.

0

w sumie zle sformulowalem pytanie - chodzi mi o zamiane danego ciagu hexow na inny

0

WriteProcessMemory
Tyle. Chyba, że w pliku exe, to chyba nawet nie ma o czym mówić...

0

tylko najpierw ten hex w pamieci musze znalezc ;)

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