Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dlaczego następuje awaria jednego wtryskiwacza mono-x64
#1
Kod:   #include "stdafx.h" typedef unsigned __int64 QWORD, * PQWORD; / * BOOL WINAPI DllMain (_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved); * / Typedef void * (* mono_domain_get) (); typedef void * (* mono_domain_assembly_open) (domena PVOID, plik PCHAR); typedef void * (* mono_assembly_get_image) (zespół PVOID); typedef void * (* mono_class_from_name) (obraz PVOID, przestrzeń nazw PCHAR, nazwa PCHAR); typedef void * (* mono_class_get_method_from_name) (klasy PVOID, nazwa PCHAR, DWORD param_count); typedef void * (* mono_runtime_invoke) (metoda PVOID, instancja PVOID, PVOID * params, PVOID exc); typedef DWORD (* mono_security_get_mode) (); typedef void (* mono_security_set_mode) (tryb DWORD); typedef void * (* mono_get_root_domain) (); typedef void * (* mono_thread_attach) (domena PVOID); mono_runtime_invoke do_mono_runtime_invoke; mono_class_get_method_from_name do_mono_class_get_method_from_name; mono_class_from_name do_mono_class_from_name; mono_assembly_get_image do_mono_assembly_get_image; mono_domain_assembly_open do_mono_domain_assembly_open; mono_domain_get do_mono_domain_get; mono_get_root_domain do_mono_get_root_domain; mono_thread_attach do_mono_thread_attach; void MonoInject () {do_mono_thread_attach (do_mono_get_root_domain); do_mono_runtime_invoke (do_mono_class_get_method_from_name (do_mono_class_from_name (do_mono_assembly_get_image (do_mono_domain_assembly_open (do_mono_domain_get (), "C: \\ Rust \\ cheat.dll")), "Loader", // lub NULL "CheatLoader"), "ObjectINIT", 0), NULL , ZERO ZERO ); } VOID Deject (powód PCHAR) {if (powód) {MessageBox (NULL, reason, "Tree Ent Gods", MB_OK | MB_ICONERROR | MB_TOPMOST); } // czyścimy siebie i nasz moduł, jeśli chcesz ... sugeruję to} void Inject () {HMODULE HandleToMono; while ((HandleToMono = GetModuleHandle ("mono.dll")) == NULL) Uśpienie (50); do_mono_domain_get = (void * (__cdecl *) (void)) GetProcAddress (HandleToMono, "mono_domain_get"); do_mono_domain_assembly_open = (void * (__cdecl *) (void *, char *)) GetProcAddress (HandleToMono, "mono_domain_assembly_open"); do_mono_assembly_get_image = (void * (__cdecl *) (void *)) GetProcAddress (HandleToMono, "mono_assembly_get_image"); do_mono_class_from_name = (void * (__cdecl *) (void *, char *, char *)) GetProcAddress (HandleToMono, "mono_class_from_name"); do_mono_class_get_method_from_name = (void * (__cdecl *) (void *, char *, DWORD)) GetProcAddress (HandleToMono, "mono_class_get_method_from_name"); do_mono_runtime_invoke = (void * (__cdecl *) (void *, void *, void **, void *)) GetProcAddress (HandleToMono, "mono_runtime_invoke"); do_mono_thread_attach = (mono_thread_attach) GetProcAddress (HandleToMono, "mono_thread_attach"); do_mono_get_root_domain = (mono_get_root_domain) GetProcAddress (HandleToMono, "mono_get_root_domain"); MonoInject (); } / * UCHWYTU WINAPI CreateThread (_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_op_SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_opt_ LPVOID lpParameter, _In_ DWORD dwCreationFlags, _Out_opt_ LPDWORD lpThreadId); * / HANDLE InjectionHANDLE = (UCHWYT) NULL; BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {switch (fdwReason) {case DLL_PROCESS_ATTACH: // 1 InjectionHANDLE = CreateThread (NULL, NULL, (LPTHREAD_START_ROUTINE) Inject, (LPVOID) NULL, NULL, NULL); złamać ; case DLL_PROCESS_DETACH: // 0 break; case DLL_THREAD_ATTACH: // 2 break; case DLL_THREAD_DETACH: // 3 break; }
Reply
#2
Debuguj to? Istnieje kilka sposobów sprawdzenia, w jakim stopniu dostaje się kod i możesz łatwo dowiedzieć się dokładnie, której linii się nie powiedzie i przejść od tego miejsca.
Reply
#3
Powodem, dla którego kod nie działa, jest to, że zapomniałeś dodać nawiasy na końcu funkcji do_mono_get_root_domain. Kod: do_mono_thread_attach (do_mono_get_root_domain ());
Reply
#4
Powodem, dla którego wyświetla się on w funkcji mono_runtime_invoke, jest fakt, że twój IDE tworzy punkt przerwania pod linią, w której wystąpił błąd. Ponieważ linia, w której wystąpił błąd, została wykonana ale zawiodło.
Reply
#5
Kod: 0x000007FEEF031AD7 (mono) mono_thread_attach BŁĄD: SymGetSymFromAddr64, GetLastError: 'Próba dostępu do nieprawidłowego adresu.' (Adres: 000007FEF9021903) Czy jest pokazany, kiedy wstrzykiwam do Rusta jakiś pomysł? (Wersja Steam)
Reply
#6
Zacytować: Wysłał pierwotnie Domekek Kod: 0x000007FEEF031AD7 (mono) mono_thread_attach BŁĄD: SymGetSymFromAddr64, GetLastError: 'Próba dostępu do nieprawidłowego adresu.' (Adres: 000007FEF9021903) Czy jest pokazany, kiedy wstrzykiwam do Rusta jakiś pomysł? (Wersja Steam) Musisz ominąć eac, nie możesz po prostu wstrzyknąć rdzy ...
Reply
#7
Zacytować: Napisał pierwotnie oOBalenOo Musisz ominąć eac, nie możesz po prostu wstrzyknąć rdzy ... Już się domyśliłem, dzięki
Reply




Users browsing this thread: 1 Guest(s)