Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Zmienianie ścieżki pliku w środowisku wykonawczym
#1
Mam plik c: \ a.exe   Uruchomiłem go i używam GetModuleFileName, aby zwrócić ścieżkę do pliku, np .: c: \ a.exe   Moje pytanie brzmi: czy mogę zmienić uruchomioną ścieżkę pliku? tj: chcę go zmienić na coś takiego jak c: \ b.exe zamiast oryginalnego c: \ a.exe   Czy to możliwe?
Reply
#2
Możesz zmienić nazwę procesu aplikacji konsoli. Spójrz tutaj. Modyfikowanie wiersza poleceń procesu - Fora Sysinternals
Reply
#3
łatwo, pobierz LDR_MODULE dla swojego głównego modułu i zmień FullDllName i BaseDllName Kod: PLDR_MODULE yourMod = (PLDR_MODULE) peb -> LoaderData -> InLoadOrderModuleList. Migać;
Reply
#4
Zacytować: Originally Posted by learn_more łatwo, pobierz LDR_MODULE dla swojego głównego modułu i zmień FullDllName i BaseDllName Kod: PLDR_MODULE yourMod = (PLDR_MODULE) peb -> LoaderData -> InLoadOrderModuleList. Migać; Dzięki za informację
Reply
#5
Proces exe jest zawsze pierwszym modułem, Ntdll drugi i trzeci jądro. Potem wszystkie zakłady są wyłączone
Reply
#6
Ok, zrobiłem to. Przetestuj, aby łatać pliki peb. Jedyny problem, jaki mam teraz, to w jaki sposób mogę załatać peb, gdy proces jest zawieszony? Chodzi o to, że ... Próbuję zrobić coś takiego ... CreateProcess (ścieżka hosta, ... CREATE_SUSPEND .., i PI) PatchPEB (PI.hProcess) ResumeThread (PI.hProcess) Z powyższym przykładem proces działa, ale łatanie peb nie jest. Wydaje się, że nie mogę pobrać danych peb. Jeśli zrobię coś takiego ... CreateProcess (... CREATE_SUSPEND .. i PI) ResumeThread (PI.hProcess) PatchPEB (PI.hProcess) Działa, ale nie robi tego, co chcę, tj. Już działającego procesu i próbuje załadować dane do modułu ładującego EOF, ale ścieżka nie jest ścieżką programu ładującego, lecz ścieżką hosta, która nie jest elementem ładującym. Właściwie chcę to osiągnąć. Miałem aplikację, którą chcę wstrzyknąć do innego procesu, aplikacja ma ustawienia, które są przechowywane w module ładującym jako dane EOF. Jeśli wstrzyknę do programu ładującego jako host, aplikacja może odczytać dane EOF, ale jeśli wstrzyknę do innego procesu, aplikacja nie odczyta danych EOF, które są przechowywane w module ładującym. Dzieje się tak, ponieważ GetModuleFileName zwraca ścieżkę do innego procesu, który wstrzykuje. Odczyt danych EOF dla tej ścieżki jest nieprawidłowy. Wszystko, co chcę, to załatanie peb'a na ścieżkę programu ładującego, a GetModuleFileName zwróci ścieżkę programu ładującego dla wtryskiwanej aplikacji, aby odczytać dane EOF. Przepraszamy za mój zły angielski, a także mam nadzieję, że ktoś mógłby mi pomóc rozwiązać ten problem. Pozdrawiam xD
Reply
#7
W końcu rozwiązuję problemy z łataniem. Działa teraz świetnie. Mam jedno ostatnie pytanie: jak ominąć zaporę sieciową wykrywającą proces łatania. Widzę, że moja zapora ogniowa av wykrywa wykrywanie, tak jak niektóre aplikacje próbują wykonać kod w innym procesie. Dzieje się tak, gdy wykonuje się WriteProcessMemory lub NtWriteVirtualMemory. Jakieś rozwiązanie tego?
Reply




Users browsing this thread: 1 Guest(s)