2012-04-19 2 views
1

PE 파일의 특정 오프셋에 (C++로) 변수를 저장하는 방법이 있습니까? 비슷한 질문 : 데이터 섹션에 저장된 변수의 특정 순서를 정의 할 수 있습니까?특정 오프셋에서 변수를 저장하는 방법

실행 파일에 설정을 저장할 수있는 프로그램이 있다고 들었습니다.

+1

마치 이러한 오프셋에 저장할 수 있다고 생각하는 것처럼 특정 문제를 해결하는 것 같습니다. 실제 문제에 대해 물어 보거나 적어도 그것이 무엇인지에 대해 말할 때 더 유용 할 수 있습니다. 따라서 사람들은 선택할 수있는 더 많은 옵션을 가질 수 있습니다. – PlasmaHH

+0

실제로 구현하지 않아도됩니다. 그러나 얼마 전 나는 실행 파일에 설정을 저장하려고 시도 했으므로 그렇게 할 방법을 찾지 못했습니다. – Samuel

답변

1

데이터 크기에 따라 PE 이미지 (MS-DOS 스텁과 같은)의 비 사용 영역을 사용하여 변수를 저장할 수 있습니다. 이러한 미사용 영역의 많은 부분의 오프셋은 잘 알려져 있습니다 (PE 형식으로 정의되기 때문에).

+0

DLL을 재배치 할 수 있다는 점에 유의하십시오. EXE는 실제로는 결코 재배치되지 않습니다 (항상 첫 번째부터 시작하므로 메모리의 다른 PE 이미지와 충돌하지 않습니다). – mox

1

"가장 쉬운 방법은 리소스 섹션을 사용하는 것입니다. 오프셋이 필요하지 않습니다. LoadString 대신 ID를 사용하며, 이는 재구성보다 안정적입니다. 그러나 이름에서 알 수 있듯이이 부분 만로드 부분입니다. 실행 중에 실행 파일을 잠그면 SaveString 부분이 부 번호이됩니다.

프로그램이 아마도 \Program Files\에 저장되어 있고 사용자가 어쨌든 쓸 수 없으므로 잠금이 중요하지는 않습니다.

+0

고마워요.하지만 저는 실제로 순수한 오프셋 솔루션에 더 관심이 있습니다. :). – Samuel

관련 문제