Заменить шестнадцатеричный код библиотеки общих объектов, загруженной в память

Как найти и заменить шестнадцатеричный код файлов .so, загружаемых в память во время выполнения, с помощью C или C++?


person Community    schedule 11.05.2020    source источник
comment
это может помочь stackoverflow.com/questions/20099916/   -  person Neil McGill    schedule 12.05.2020
comment
Я должен добавить, что все это ужасно зависит от ОС, поэтому вам нужно предоставить больше информации в таком вопросе. Там может быть более чистый способ достичь того, что вы хотите. Память вашего собственного кода, скорее всего, будет находиться в выгружаемой памяти только для чтения, недоступной напрямую, и вам нужно будет запросить доступ к ней у ОС. Следовательно, PTRACE_ATTACH/POKEDATA.   -  person Neil McGill    schedule 12.05.2020
comment
Хорошо, ОС - android x86 с root-доступом. я знаю смещения, и я знаю шестнадцатеричный код в файлах .so, которые я хочу заменить после их загрузки в память   -  person    schedule 12.05.2020
comment
Кажется, что упомянутый выше подход ptrace будет работать на Android - stackoverflow.com/questions/34433451/ однако, чтобы получить адрес для начала, вы можете использовать systutorials.com/docs/linux/man/3-dl_iterate_phdr   -  person Neil McGill    schedule 12.05.2020
comment
Из этого подхода парней можно вставить слишком много, но он охватывает все необходимое - я уверен, что вы можете адаптировать это к C - ancat.github.io/python/2019/01/01/python-ptrace.html   -  person Neil McGill    schedule 12.05.2020
comment
Большое спасибо за вашу помощь. Я буду смотреть в него.   -  person    schedule 13.05.2020