다른 프로세스의 메모리에서 일부 데이터를 읽으려고하는 응용 프로그램을 작성 중입니다. 이 다른 프로세스는 대상 데이터 (어셈블리)가 있어야하는 libmono.0.dylib을로드하고 있습니다.다른 프로세스의로드 된 dylib에서 데이터 필드 읽기
일부 mach-o 기반 코드를 사용하면 대상 프로세스의로드 된 dylib를 반복하고 위의 lib의 mach header header baseaddress를 얻을 수 있습니다. 이
MonoDomain* mono_get_root_domain (void) { return mono_root_domain; }
과 같은 모노 소스 코드에서
: 여기에서 나는 나에게 관련 데이터 구조체를 반환하는 함수의 주소를 제공하는 기호 표를 얻을 수 있습니다 0x18a934의 주소가 반환 된 구조체를 보유한다는 가정이 맞습니까? 그렇다면이 주소는 dylib 헤더 (= header_addr + addr)에 상대적입니까 아니면 일부 슬라이드를 추가하거나 그대로 사용해야합니다. 이 주소를 따라 가면 다른 모든 주소에 동일한 보류가 적용됩니까?
답변 해 주셔서 감사합니다. 나는 이미 그 부분을 가지고 있는데, 나는로드 된 헤더 주소와 심볼에 대한 포인터를 갖고있다. 위에서 볼 수 있듯이 디스 어셈블 된 코드의 "내부"포인터를 발견했습니다. 이제 어떻게 사용합니까? dylib_base_address + pointer를 읽으면 무작위로 얻을 수 있습니다. 어떤 VM 지역이 가리키고 있습니까? – GooKSL