파일의 오프셋에 관한 질문이 있습니다. 이런 파일을 열면 ".exe"확장자/파일이 있습니다.메모리 주소 파일
handle = open('file.exe', mode='rb')
이제 10 번째 '바이트'에 액세스하려고하면 검색 기능을 사용할 수 있습니다.
handle.seek(10, 0)
PE 헤더의 많은 값은 RVA입니다. 즉 Imagebase + RVA는 메모리에로드 될 때의 오프셋입니다. 문제는 당신이이 가치를 추구 할 수 없다는 것입니다. 예 :
.idtata 섹션에는 가상 주소 (RVA)와 원시 주소 (이미지 기반)가 있습니다. 이전 방법을 사용하면 원시 주소를 사용하여 올바른 오프셋에서 읽을 수 있습니다. 많은 값들에 대해서만 RVA가 주어진다.
이 방법으로 파일을 여는 것은 메모리에로드 될 때 이미지베이스가 0x00400000 인 대부분의 시간에 시작됩니다. 파일을 메모리에로드하여 메모리에로드 할 때 정확한 오프셋 값을 사용하는 방법이 있습니까? 그래서 0 대신 RVA의 파일을 찾을 수 있도록 파일이 이미지베이스에서 시작됩니까?
종류의 안부와, 당신이 윈도우에있는 경우
"[실행 파일] 파일을 메모리에로드하지 마십시오." 나는 이에 대한 결정적인 대답은 없다고 생각한다. [메모리 주소 무작위 화] (https://en.wikipedia.org/wiki/Address_space_layout_randomization) – goncalopp